我正在使用VIm
并尝试设置一个搜索和替换命令来进行一些替换,在其中我可以重新使用作为搜索字符串一部分的正则表达式。
一个简单的例子是我想要替换(10)
为 的一行{10}
,其中 10 可以是任何数字。
我来了这么远
.s/([0-9]*)/what here??/
这与我想要的部分完全匹配。
现在更换,我尝试过
.s/([0-9]*)/{\0}/
但是,这给出了输出{(10)}
然后,我尝试了
.s/(\zs[0-9]*\ze)/{\0}/
然而,这给了我({10})
,我也关闭了,但不是我想要的。
我想我需要一些其他类型的标记/反向引用来代替这个\0
,但我不知道在哪里看。那么问题是,这可以在 vim 中完成吗?如果可以,怎么做?
答案1
答案2
我最近继承了一些遗留代码,我想替换所有出现的代码,例如:
print "xx"
print x,y
print 'xx'
到
logging.info("xy")
或者
logging.info(x,y)
基于之前的答案为了希望有人能从中受益,我使用了以下命令,这将改变所有的情况:
%s/print\( .*\)/logging.info\(\1\)/g
如果你%
用以下方式替换.
并删除,/g
你最终会得到
.s/print\( .*\)/logging.info\(\1\)
这将使您能够查看每场比赛并选择是否更改它。
答案3
让您能够查看每个匹配项的更好方法是在代码末尾添加“c”,而不是逐行查看
%s/print\( .*\)/logging.info\(\1\)/gc