1

私は通常、次のようなvimで検索と置換を行います。

:%s/\([\.!?]\|[\.!?]"\)\s\s/\1text /g

したがって、ピリオド、感嘆符、疑問符、または上記のいずれかに続く引用符と2つのスペースのいずれかを検索します。正常に動作します。

しかし、これをvimrcにマッピングすると、

map <F4> :%s/\([\.!?]\|[\.!?]"\)\s\s/\1text /g<CR>

次にF4を押すと、次のエラーメッセージが表示されます。

E486: Pattern not found: \([\.!?]|[\.!?]"\)\s\s

なんらかの理由でパイプの前のバックスラッシュを削除しているのですが、理由はわかりません。誰かがこの動作を修正する方法を知っていますか?

4

1 に答える 1

4

:mapping では、パイプ文字は特別です。<Bar>代わりに使用してください:

:noremap <F4> :%s/\([\.!?]\<Bar>[\.!?]"\)\s\s/\1text /g<CR>

また、使用する必要があります:noremap。これにより、マッピングが再マッピングと再帰の影響を受けなくなります。

于 2013-03-06T14:14:32.340 に答える