次の行があるとします。
a|b|c
正規表現を実行して次のように変換したいと思います:
a\|b\|c
私がよく知っているほとんどの正規表現エンジンでは、次のようなものが機能s%\|%\\|%g
するはずです。これを Vim で試すと、次のようになります。
\|a\||\|b\||\|c
結局のところ、この質問を入力しているときに答えを発見しました。とにかく、検索で重複が見つからなかったことに少し驚いたので、ソリューションと一緒に提出します。
Vim はこの点で PCRE とは反対のことを行います:|
はリテラルのパイプ文字であり\|
、代替演算子として機能します。パイプ文字をエスケープする必要がないため、適切なエスケープ シーケンスが見つかりませんでした。
次のコマンドは、私の例の行に対して機能します。
:. s%|%\\|%g
very-magic
(use ) を使用する\v
と、ほとんどの特殊文字 (vim の仕様を除く) で Perl/pcre の動作が得られます。
:s#\v\|#\\|#g