web-dev-qa-db-ja.com

VIM検索/検索でバックスラッシュとスラッシュをエスケープするにはどうすればよいですか?

たとえば、バックスラッシュまたはフォワードスラッシュを含む文字列を検索して置換したい場合、vimでこれをどのように実現しますか?ありがとうございました!

例検索と置換は::%s/foo/bar/g

<dog/>のすべてのオカレンスを検索し、<cat\>に置き換えたい場合

83
stormist

バックスラッシュを使用して、Linuxyプログラムの他のほとんどの場所で文字をエスケープするのと同じ方法:

:%s/<dog\/>/<cat\\>

ただし、代わりに別の区切り文字を選択できることに注意してください。

:%s@<doc/>@<cat\\>@

これにより、大量のスラッシュを含むパターンでの時間のかかる、混乱を招くバックスラッシュをすべて入力する必要がなくなります。

ドキュメント から:

パターンと置換文字列を囲む/の代わりに、英数字、\"、または|以外の任意のシングルバイト文字を使用できます。これは、検索パターンまたは置換文字列に/を含める場合に便利です。

134
Cascabel
%s:<dog/>:<cat>

/区切り文字は、特定のパターンで迷惑になる場合に置き換えることができます。

21
Sarah

バックスラッシュでそれらを引用します。また、スラッシュの他に別の区切り文字を使用すると便利な場合があります。

 :%s#<dog/>#<cat\\>#

または、代替コマンドの区切り文字としてスラッシュを使用する必要がある場合

 :%s/<dog\/>/<cat\\>/
8
wallyk

構文は次のとおりです。

:%s/<dog\/>/<cat\\>/g
3

/文字を含むレジスタ値を検索するために(マクロを記録するために)同様の何かを探していました。解決策は、?の代わりに/トークンを使用して検索することでした。

2
Fernando