第23回 Vimスクリプト入門みたいの(スクリプトを読みながら勉強してみる、2-4)

さて、GrepSearch(), ParseSearchResult() を見ていきたい。それぞれをちらちらと確認してみた。ParseSearchResult() の説明文を信じるなら、GrepSearch() の結果を真似できる関数なら、問題なく動作しそうだ。

GrepSearch() からは grep.vim の GrepSearch() を呼んでいるようだ。まぎらわしいので、howm-mode.vim の方を s:GrepSearch() とする。GrepSearch() の出力は説明文によると HInr 準拠らしい。実際に動かしてみても、そう動作する。HInr だと grep はバイナリを無視して、ディレクトリを再帰的に検索し、ファイル名、行番号、マッチ行の三つを : 区切りで出力する。s:GrepSearch は bRegexp にしたがって -F ( 固定文字列 ) か -E ( 拡張正規表現 ) を追加し、searchWord 中の大文字の有無で -i も追加する。

GrepSearch() にそのままの searchWord を渡していることから、やはり searchWord は固定文字列か、拡張正規表現でしか動かないことがわかる。Vim正規表現が使えなければ、migemo() は動かせない。Vim正規表現に対応した grep があればいい。Vim7 からは grep を内蔵しているので、それを使うといい。grep -HInr の形式も migemo() + :vimgrep の結果をすこしいじれば対応できそうだ。