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で行うことができるかどうかということです。それではどうですか?

答え1

\0それは完全なゲームです。一部のみを使用するには、次のように設定して \1 を使用する必要があります。

.s/(\([0-9]*\))/{\1}/

詳しい案内をご覧いただけますここまたはvimヘルプから。

答え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

各一致を表示するより良い方法は、1行ずつ表示するのではなく、コードの末尾に「c」を追加することです。

%s/print\( .*\)/logging.info\(\1\)/gc

関連情報