在Vim中,我想用&anyWord
替换每个C_LOC(anyWord)
。我正在尝试以下方法:
:%s/&\w*/C_LOC(\w*)/g
此命令检测每个&anyWord
。问题是,它将其替换为C_LOC(\w*)
而不替换为C_LOC(anyWord)
。
答案 0 :(得分:3)
您需要在模式中使用捕获组,并在替换中使用反向引用:
:%s/&\(\w*\)/C_LOC(\1)/g
如果您需要非常神奇的模式,则不应转义模式中的(
和)
。
此外,如果您想匹配至少1个字符,请将\w*
替换为\w\+
(有关将+
转义为(
和)
的相同说明)。
答案 1 :(得分:0)
还有另一种方式。
:%s/\v(\&)@<=\w+/C_LOC(&)/
第二个(替换)部分中的“&”表示图案部分。