Vim

Vim 搜尋和替換 - 正則表達式

  • June 24, 2016

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

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

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

abcd
abcd

abcd   bcd

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

您快到了,但您的正則表達式正在用製表符替換換行符非數字。

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

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

轉義有點混亂,但基本上你有一個分組\D,它將擷取非數字的任何內容。然後將其引用以\1將其插入選項卡之後。

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

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

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

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

它們並不完全相同,第二個也將替換文件中的最後一個換行符。

引用自:https://unix.stackexchange.com/questions/291770