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