私はVIm
を使用して、検索文字列の一部である正規表現を再利用できるいくつかの置換を行うために、検索および置換コマンドを設定しようとしています。
簡単な例は、_(10)
_を_{10}
_に置き換えたい行です。ここで、10は任意の数値です。
ここまで来た
_ .s/([0-9]*)/what here??/
_
私が欲しい部分と正確に一致します。
さて、交換してみました
_ .s/([0-9]*)/{\0}/
_
しかし、これは出力として{(10)}
を与えます
次に、試しました
_ .s/(\zs[0-9]*\ze)/{\0}/
_
ただし、これにより_({10})
_が得られましたが、これも閉じるが、必要なものではありません。
私はこの_\0
_の代わりに他の種類のマーキング/後方参照が必要だと思いますが、どこを見ればよいのかわかりません。それで問題は、これはvimで行うことができますか?
各一致を確認できるようにするためのより良い方法は、行ごとではなく、コードの最後に「c」を追加することです。
%s/print\( .*\)/logging.info\(\1\)/gc
私は最近、いくつかのレガシーコードを継承しました。
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\)
これにより、各マッチを調べ、変更するかどうかを選択できます。