Vim替换正则表达式

时间:2017-02-02 09:37:10

标签: regex vim

在Vim中,我想用&anyWord替换每个C_LOC(anyWord)。我正在尝试以下方法:

:%s/&\w*/C_LOC(\w*)/g

此命令检测每个&anyWord。问题是,它将其替换为C_LOC(\w*)而不替换为C_LOC(anyWord)

2 个答案:

答案 0 :(得分:3)

您需要在模式中使用捕获组,并在替换中使用反向引用:

:%s/&\(\w*\)/C_LOC(\1)/g

如果您需要非常神奇的模式,则不应转义模式中的()

此外,如果您想匹配至少1个字符,请将\w*替换为\w\+(有关将+转义为()的相同说明)。

答案 1 :(得分:0)

还有另一种方式。

:%s/\v(\&)@<=\w+/C_LOC(&)/

第二个(替换)部分中的“&”表示图案部分。