2012-10-19 16 views
5

私は以下のようないくつかの行がありますので、私はvimの中でそれを行うには、次のコマンドを使用しvimの補充問題

aaa=$aaa 
bbb=$bbb 
ccc=$ccc 
ddd=$ddd 

、私:

aaa 
bbb 
ccc 
ddd 

私は彼らがこのように変更することにしたいがエラー

:s/\(\^*\)/\1=\$\1/ 

を持って、私はここ\1を実現2回使用することができませんでした、そして、私はこれをどのようにしたらよいでしょうか?

答えて

4

バックリファレンス\1は、何度でも使用できますが、別の問題があります。あなたの正規表現は、そのようになります。

:%s/^\(.*\)/\1=\$\1/ 

説明:%は、すべての行に置き換えるためにVimを伝えます。行の先頭のマークとして^は、正規表現の最初の文字にする必要がありますし、エスケープしないでください。 .*は、「任意の回数の任意の文字」を意味します。しかし、元の式\(\^*\)は、リテラル文字^(noneを含む)の繰り返しの数を検索します。

+0

私の問題は解決しました、ありがとう! :) – user1726366

4

行全体の内容を一致させる場合は、\(...\)を使用して^アンカーもキャプチャも必要ありません。置き換えでは、\0またはそれ以下の&を使用できます。 (また、そこに$をエスケープする必要はありません)

:%s/.*/&=$&