Vim: 将字符串 a 替换为包含 '&' 符号的字符串 b

Vim: replacing string a with string b containing '&' sign

我有很多行代码包含“a && b”形式的表达式。 现在,我想添加表达式“&& c”,因此以“a && b && c”结尾。其实很简单。

但是,当我这样做时

:%s/b/b && c/gc

它显然用 'bb' 替换了 && 符号。这似乎是一个 vim 功能。

现在我的问题是:有解决办法吗? 我真的需要做这个更换。

最好的, 米丽亚姆

使用反斜杠转义特殊符号:

:%s/b/b \&\& c/gc

在替换的替换部分,&是一个特殊字符,表示“整个匹配”。它通常用于您对匹配本身没问题而只想向其添加内容的场景:

:%s/foo/&bar/g

会将缓冲区中的每个 foo 变成 foobar

在你的例子中,& 代表 b 所以:

:%s/b/b && c/gc

得到你:

a && b bb c

您需要做的就是转义 &:

:%s/b/b \&\& c/gc

也许,因为我们正在做,所以使用 & 作为它应该使用的东西:

:%s/b/& \&\& c/gc