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

how to replace multiple places of one line by single search and replace command in vim?

在 vim 中,我想将 print 更改为 print() for such

print XXX

print(XXX)

如果我运行

:%s/print /print\(/g

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

您需要截取中间部分才能跟踪它:

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

与:

  • \v :使用 magic 模式(参见 :h magic)。这里主要是不必转义括号和+(否则你会写print \(\w\+\))。
  • print(尾随 space):简单匹配,您可能希望将 space 替换为 \s+ 以匹配多个白色 space s (space/tabs)
  • (\w+) :匹配一个或多个单词字符([0-9A-Za-z_],请参阅 :h /character-classes 了解更多信息和 类)并捕获它(括号)
  • /print() :这里括号没有特殊意义,指第一个捕获的组