vim-users.jp

Hack #91: 検索パターンの入力を改善する

Posted at 2009/10/22
このエントリーをはてなブックマークに追加

問題

/{pattern}による検索ですが、 実は検索パターンに「/」をそのまま含めることができません。 Vimにはsearch-offsetという機能があり、 その記法が/{pattern}/{offset}となっているためです。

例えば「/usr/local」を検索しようと//usr/localを入力しても 期待通りの結果は得られません。 そのため「/」を検索文字列に含めたい場合は 「\/」とエスケープしなければなりません。 ?{pattern}による検索についても同様の問題があり、 「?」を検索したければ「\?」とエスケープしなければなりません。

しかしsearch-offsetの利用頻度は 「/」を含む語句を検索する機会に比べれば稀です。 このために一々エスケープするのは面倒です。 どうすればよいでしょうか。

解決方法

これには以下の内容をvimrcに追加します。

cnoremap <expr> /  getcmdtype() == '/' ? '\/' : '/'
cnoremap <expr> ?  getcmdtype() == '?' ? '\?' : '?'

これにより、 /{pattern}の入力中は「/」をタイプすると自動で「\/」が、 ?{pattern}の入力中は「?」をタイプすると自動で「\?」が 入力されるようになり、検索パターンの入力の手間を軽減することができます。

参考資料

kana

もどる
blog comments powered by Disqus