Vim
Vim 搜尋和替換 - 正則表達式
我想執行搜尋和替換。任何非數字前的換行符應替換為製表符。我試過
%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/
它們並不完全相同,第二個也將替換文件中的最後一個換行符。