Vim 正则表达式查找和替换

3
我想使用正则表达式替换文件中的一些字符串。我搜索: %s/^ [a-z]*/ / 我的目的是将每个具有2个空格的[a-z]*替换为具有4个空格前缀的相同[a-z]。是否有“原地”替换或者如何在vim中实现这一点?
此致敬礼

你的意思是用[][][][]abcd替换[][]abcd,其中[]代表空格吗? - amazingjxq
2个回答

5
:%s/  \([a-z]*\)/    \1/g

应该可以完成任务;但要小心多次运行,因为替换的结果会匹配输入模式 :)


我非常难过这个被投票否决了,那个\1是无价的!感谢您提供的绝妙提示 :) - Hassek

3

我觉得使用\ze对象来定义匹配的结尾更为直观:

:%s/  \ze[a-z]*/    /g

因此,[a-z]*并不包括在替换中,而只是用于匹配相关空格。

这也会影响以4个空格为前缀的行。 - Eugene Yarmash
我喜欢那种方法。这也会更有效率(如果这不会导致明显的速度差异,我会感到惊讶,但是嘿,我是一名程序员)。 - sehe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接