如何通过单个搜索替换一行的多个位置并在vim中替换命令?

时间:2015-03-12 09:56:51

标签: vim

在vim中,我想从print更改为print()以便

print XXX

print(XXX)

如果我跑

:%s/print /print\(/g

这个只完成了第一部分,如何替换一次?

1 个答案:

答案 0 :(得分:2)

你需要捕捉中间部分才能跟踪它:

:%s/\vprint (\w+)/print(\1)/g

使用:

  • \v:使用magic模式(请参阅:h magic)。这里主要是不必转义括号和+(否则你要写print \(\w\+\))。
  • print(带尾随空格):简单匹配,您可能希望用\s+替换空格以匹配多个空格(空格/制表符)
  • (\w+):匹配一个或多个单词字符([0-9A-Za-z_],有关更多信息和类,请参阅:h /character-classes)并捕获它(括号)
  • /print(\1):这里的括号没有特殊含义,\1指的是第一个被捕获的群体