2017-02-02 16 views
1

Vimでは、&anyWordをすべてC_LOC(anyWord)に置き換えたいと思います。私は、次のことをしようとしている:Vim置換正規表現

:%s/&\w*/C_LOC(\w*)/g

このコマンドは、すべての&anyWordを検出します。問題は、それがC_LOC(\w*)に置き換えられ、C_LOC(anyWord)に置き換えられないことです。

+2

ファイル内の単一の '&'を置き換えるように注意してください。 –

+0

アドバイスをいただき、ありがとうございます。確認のために/ gではなく/ gcを使用します。 – Sergio

+2

また、 '*'の代わりに '+'を使用して、 '&'の後に少なくとも**単語の文字が**あることを確認してください。 –

答えて

3

あなたは、交換におけるパターンと後方参照でキャプチャグループを使用する必要があります。

:%s/&\(\w*\)/C_LOC(\1)/g 

あなたは非常に魔法のモードが必要な場合は、パターン内の()をエスケープするべきではありません。また

、あなたは、少なくとも1ワードの文字にマッチ(()として+をエスケープについて同じノート)\w\+\w*を交換したい場合。

0

別の方法があります。第二に

:%s/\v(\&)@<=\w+/C_LOC(&)/

アンパサンド(置換)部分がパターン部を意味します。