web-dev-qa-db-ja.com

VIエディターのコマンドウィンドウで、ソースWordを/(フォワードスラッシュ)に置き換えて宛先Wordに置き換えます

Cmakeのコンパイル中に問題が発生します。何千もの/root/repo/があり、/repo/に置き換えたいです。ソースWordの/のため、コマンド

:%s/srcWrd/dstwrd/gc 

動かない。進め方についてはこちらをご案内ください。

入力例:ファイルの1行に

/root/repo/my-gerrit/myData.cpp

それは次のようになります

/repo/my-gerrit/myData.cpp

以下のコマンドをファイル内で試しましたが、期待どおりに動作しません。

:%s\/root\/\repo\/repo/gc
3
Achal

あなたが与えた例では、ファイルに

/root/repo/my-gerrit/myData.cpp

これは次のように変更できます

/repo/my-gerrit/myData.cpp

コマンド:%s/\root//gcを使用します。

通常のフォワードスラッシュがない%s\/root\/\repo\/repo/gcを試みました。 /root/repo//repo/に置き換える場合、コマンドは%s/\/root\/repo\//\/repo\//gcになります。

置き換えたいスラッシュは\でエスケープされることに注意してください。コマンドの一部であるスラッシュはnotエスケープされます。

2
vidarlo

バックスラッシュを使用してスラッシュをエスケープすることもできますが、別のセパレータを使用する方がはるかに簡単です。

といった:

:%s#/root/repo/#/repo/#gc

または:

:%s+/root/repo/+/repo/+gc

または:

:%s,/root/repo/,/repo/,gc

:sコマンドでは、ほとんどすべての記号を区切り記号として使用できるため、パターンまたは置換でその記号をエスケープする必要がない記号を簡単に見つけることができます。

参照 :help E146

1
filbranden