我的文档中有这个字符串:
subject.reset();
我正在运行这个正则表达式:
:%s/reset\(\)/doStuff\(\)/g
结果如下:
subject.doStuff()();
这个额外的括号对来自何处?我希望它看起来像这样:
subject.doStuff();
如何在vim中进行搜索和替换?
答案 0 :(得分:3)
您无需在vim中转义()
。尝试
:%s/reset()/doStuff()/g
或
:%s/reset/doStuff/g
\(
或\)
表示在vim
内捕获群组。有关捕获群组的信息,请参见 here 。
在您的示例中
reset\(\)
实际上意味着您正在替换reset
和一个捕获组(,它是空的,并且它实际上并不包含您想要的括号)。所以,基本上你只用reset
替换doStuff()
..
subject.doStuff()();
^^ ^^
|| (was already here after reset and not replaced)
reset is replaced with do Stuff()
reset
之后的括号仍然存在