
我正在使用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