ソースコメントを除外するgrepプラグイン「coolgrep.vim」作った
ばよえ〜ん(訳:Vim Advent Calendar 2012への6回目の投稿です)
また間違えた!6連鎖目はじゅげむでした。
この記事はVim Advent Calendar 72日目の記事です。
前回は@yoshikawさんの端末vimでマウスを使うでした。
Vimのsyntax情報を利用する
Vim Advent Calendar 55日目の記事smartgrep.vim ソースコメントを除外するgrepプラグイン : Pebble On Softwareはすばらしいと思うのですが、いくつか気になる点を見つけました。
.exeファイルを呼び出しているためWindowsのみしか対応していない- Vimはsyntax highlightするために「この部分はコメント」などの情報を持っているので、それを使えば構文解析しなくとも実現できる
Vimのsyntax highlightは膨大な数のフォーマットに対応しています。
デフォルトでインストールされているsyntaxファイルだけでもこんなにあります。
:echo globpath(&rtp, 'syntax/*.vim') /usr/local/share/vim/vim73/syntax/2html.vim /usr/local/share/vim/vim73/syntax/a2ps.vim /usr/local/share/vim/vim73/syntax/a65.vim /usr/local/share/vim/vim73/syntax/aap.vim /usr/local/share/vim/vim73/syntax/abap.vim /usr/local/share/vim/vim73/syntax/abaqus.vim /usr/local/share/vim/vim73/syntax/abc.vim /usr/local/share/vim/vim73/syntax/abel.vim /usr/local/share/vim/vim73/syntax/acedb.vim /usr/local/share/vim/vim73/syntax/ada.vim /usr/local/share/vim/vim73/syntax/aflex.vim (多すぎるので略。全部で581個ありました。繰り返しますがデフォルトでインストールされているものだけです)
syntax情報を利用すればもっと簡単に「コメントを無視するgrep」が実現できそうだったので、作ってみました。(コミットログ見れば分かりますが、実は@pebble8888さんの記事を見てから2時間ほどで作りました)
インストールすると「:CoolGrep」と「:CoolVimGrep」コマンドが使えるようになります。
それぞれ「:grep」と「:vimgrep」に対応するコマンドです。
使い方
:CoolGrep
「:grep」コマンドの書式がそのまま使えます。
'grepprg'オプションにセットしているコマンドの書式が使えます。
(UnixではgrepコマンドだったりWindowsではfindstrコマンドだったり)
詳しくは「:help :grep」
:CoolGrep -i vim *.txt
:CoolVimGrep
「:vimgrep」コマンドの書式がそのまま使えます。
grepコマンドなどがインストールされている必要はありませんが、遅いです。
詳しくは「:help :vimgrep」
:CoolVimGrep /vim/i *.txt :CoolVimGrep vim *.txt
:wqa!
次のVim Advent Calendarは@manga_osyoさんです。