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

相关内容