Vim 搜尋與取代 - 正規表示式

Vim 搜尋與取代 - 正規表示式

我想執行搜尋和取代。任何非數字之前的換行符號應替換為製表符。我試過

%s/\n\D/\t/g

但它替換了換行符後面的單字的第一個字符,這不是我想要的,即

abcd
abcd

abcd   bcd

我想a在換行符之後保留。

答案1

你已經快到了,但是你的正規表示式正在替換換行符帶有製表符的非數字。

如何用製表符替換後面跟有非數字的每個換行符和相同的非數字

%s/\n\(\D\)/\t\1/g

轉義有點混亂,但基本上你有一個圍繞 的分組,\D它將捕獲任何非數字。然後引用 並將\1其插入選項卡之後。

答案2

一種方法是使用結束匹配標記:

%s/\n\ze\D/\t/

另一種方法是使用負前瞻:

%s/\n\d\@!/\t/

它們並不完全相同,第二個也將取代檔案中的最後一個換行符。

答案3

我希望這能幫到您

:%s#\n.\D#\t#g

相關內容