これは私がやろうとしていることです:
%s/Article/<h2>Article</h2>/gi
残念ながら、vimエディターでこのコマンドを実行するたびに、次のように表示されます。
末尾の文字
上記を緩和するために、私は以下を実行しました:
%s/\s*\r*$//
そして、それは正常に実行されますが、元の検索および置換コマンドに戻ると、再度「末尾の文字」が読み取られ、検索および置換操作は実行されません。
ここで何が悪いのですか?
「末尾の文字」はコマンドではなく、ドキュメントにあります。
Vimは、コマンドをArticle</
で終了したと見なし、h2>/gi
を代替コマンドの3番目の引数と見なします。ただし、これらの文字はすべて3番目の引数に有効ではないため、エラーが発生します。
これを解決するには、代替文字の/
文字をエスケープする必要があります。
%s/Article/<h2>Article<\/h2>/gi
また、正規表現(XML/HTML/UNIXファイルパス)でリテラルスラッシュを頻繁に使用する必要があり、すべてのインスタンスのエスケープについて心配したくない場合は、別の区切り文字を使用できます。たとえば、!の代わりに /:
%s!Article!<h2>Article</h2>!gi
私は怠惰で、これは通常、手動でスラッシュをエスケープするよりも簡単です。