Sed
僅將每行開頭的每個製表符替換為空格
所以用空格替換文件中的所有製表符並不難。
例如,在 vim 中,我可以做
%s/\t/ /gc
如果我想替換每行開頭的那些,而不是中間的那個我可以做
%s/^\t/ /gc
但是如果有一行開頭有多個製表符,中間有製表符的行,我想用空格替換行開頭的每個製表符以保持文件的縮進結構,即我不知道該怎麼做。
在 vim 或 sed 或一般使用正則表達式。
您可以使用評估寄存器將任意數量的製表符替換為適當數量的空格。例如:
:s/^\t\+/\=repeat(' ',len(submatch(0)))
解釋:
:s/ " Replace ^ " At the start of a line \t\+ " One or more tabs /\= " With the following evaluated as vimscript: repeat(' ',len(submatch(0))) " 4 spaces times the length of the previously matched string