Vim
使用vim替換,重用部分搜尋模式
我正在使用
VIm
並嘗試設置搜尋和替換命令來進行一些替換,在這些替換中我可以重新使用作為搜尋字元串一部分的正則表達式。一個簡單的範例是我要替換
(10)
為的行{10}
,其中 10 可以是任何數字。我來了這麼遠
.s/([0-9]*)/what here??/
這完全符合我想要的部分。
現在換了,我試過了
.s/([0-9]*)/{\0}/
但是,這作為輸出
{(10)}
然後,我嘗試了
.s/(\zs[0-9]*\ze)/{\0}/
但是,這給了我
({10})
,我也關閉了,但不是我想要的。我想我需要一些其他類型的標記/反向引用而不是 this
\0
,但我不知道在哪裡看。所以問題是,這可以在 vim 中完成嗎?如果可以,怎麼做?
\0
是整場比賽。要僅使用它的一部分,您需要像這樣設置它並使用 \1.s/(\([0-9]*\))/{\1}/
您可以在此處或在 vim 幫助中找到更詳細的說明。
我最近繼承了一些遺留程式碼,我想替換所有出現的程式碼,例如:
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\)
這將使您能夠檢查每場比賽並選擇是否更改它。