在VIM中,在模式之后添加换行符

32
我有一个CSS文件,想在每个}后添加一个空行。如何在Vim中实现?

1
与 https://unix.stackexchange.com/questions/247329/vim-how-to-replace-one-new-line-n-with-two-ns 相关的内容 - jdhao
3个回答

49

一次替换会很好地解决问题。

:%s/}/\0\r/g

} 替换为整个匹配项 \0 和一个换行符 \r
:%s/}/&\r/g

我认为 & 作为整个匹配的替代也是一种替代方式,虽然有点有趣。Vim高手喜欢使用它,因为这样可以节省一个按键 :)

\0 或者 & 在替换部分中充当特殊字符。在替换过程中,整个匹配的字符串将替换替换部分中的 \0& 字符。

我们可以通过更复杂的搜索和替换来演示这一点 -

Which witch is which?

应用替换 -
:s/[wW][ih][ti]ch/The \0/g

给 -

The Which The witch is The which?

4
对于这样一个初学者问题,解释肯定会有帮助:\0(更短的是&)重新插入匹配,\r是换行符的转义序列(在替换中通常是\n)。 - Ingo Karkat

8
:%s/pre/cur\r/g

%: 操作整个缓冲区。

pre(上一个模式):将要被更改的模式。

cur(当前模式):用来更改上一个模式的模式。

\r:新行。

g:为每个匹配项重复执行操作(默认情况下只替换第一个匹配项)。


7
答案是:%s/}/}\r/,我猜的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接