5

次のコマンドを使用して、現在カーソルの下にある単語を別のファイルで検索する必要がある vimscript で vim プラグインを作成しています。

exec 'vimgrep /' . expand('<cword>') . '/g filename'

検索パターン内に正規表現やスラッシュが含まれていないことを確認する必要があります。

どうすればそれらの文字をエスケープできますか?

4

2 に答える 2

9

で正規表現を開始すると\V、「非常に魔法のない」モードに変わります。つまり、バックスラッシュで始まるアトムだけが特別です。まさにこのバックスラッシュは、 を介してエスケープされますescape()。また、この正規表現は で区切られて/.../いるため、スラッシュもエスケープする必要があります。

exec 'vimgrep /\V' . escape(expand('<cword>'), '/\') . '/g filename'

設定に関係なく検索で大文字と小文字を区別したい場合は、 atom'ignorecase'を追加します。\C/\V\C...

PS:filename特殊文字 ( など%)を含めることができる場合はfnameescape()、それも含めてください。

于 2012-07-03T13:13:03.580 に答える