如何在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()
:这里括号没有特殊意义,
指第一个捕获的组
在 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()
:这里括号没有特殊意义,指第一个捕获的组