if endif などが % で対応できる matchit.vim のハイライト plugin hl_matchit.vim 書いた

はじめに
どうもこんにちは。 ソノダバンド大好き君です。
この記事は Vim Advent Calendar 2012 の 26 日目の記事です。
今日は会社の同僚に matchit.vim でハイライトできないもんかね? と言われたので vim plugin を作ってみました。

背景
このプラグインをなぜ書いたか、それは
- ググった結果 結構それっぽい質問をしている人が多かった
- 出てきた solution っぽいサイトの snippet がコピペでは動かない
- 2012 なら (Neo)bundle したい
などがあげられます。

matchit.vimとは
if と endif などの対応を % で移動できるようになる plugin です。
参考 : http://nanasi.jp/articles/vim/matchit_vim.html

僕の認識では vim をインストールすると一緒についてきていて、
/usr/share/vim/vim73/macros/matchit.vim
とかに入っているイメージです。
vimrc に

source $VIMRUNTIME/macros/matchit.vim
or
runtime macros/matchit.vim

こんな感じでかけばオッケーって matchit.txt さんが言ってました。

hl_matchit.vim のインストール

NeoBundle 'vimtaku/hl_matchit.vim.git'

とりあえず試してみたいって方は install したあとに :HiMatchOn をして html を表示してみたりするといいかもです。
その他は doc もでっちあg書いたのでそちらを参照してください。

以下に適当な設定例を書いておきます。

"" for hl_matchit
let g:hl_matchit_enable_on_vim_startup = 1
let g:hl_matchit_hl_groupname = 'Title'
let g:hl_matchit_allow_ft_regexp = 'html\|vim\|ruby\|sh'

SS


解説

嬉しい点
htmlとか書いている時に構造的にマッチしてない(/閉じてない)やつとかが
ハイライトされないので気づくのが容易になるかもしれないです!

実装
http://objectmix.com/editors/377087-matchit-plugin-highlighting.html#post1403424
の snippet を plugin にしただけです(キリッ
だけど実際ちょっと使ってみたら, 使用上結構問題点があったので
ちょっとだけ工夫してみました。
plugin を書く上では
@manga_osyo さんの Vim Advent Calendar 2012 記念すべき1日目の記事
http://d.hatena.ne.jp/osyo-manga/20121201/1354288903
が参考になりまくりました!

工夫した点
指定した filetype のみ highlight するようにできるようにしました。
あと、どうも matchit の % に時間がかかって全ッ然使えない場合が結構あったので、
対応する文字を制限したり、括弧類を含むlineだと % が重くなるようだったので
その場合は設定によってスキップしたりするようにしました。
(matchit を追ったわけでないので場当たり的な対応です。今後に期待。)
まぁ実際に使っていただくとわかりやすいかと思います。


所感
この plugin の highlight は主に html を読む場合に非常に有効だと思います。
僕はカーソル移動に関して、速度クライマックス派パワープレイ型なので
読むのを妨げるような重さのカーソルとかになるのを避ける事はかなり重要だと思います。
このプラグイン作ってまだ全然使ってないですけど、良い感じに改良していきたいです!!!

なんていうか微妙な感じになってしまった感は否めないですが、
今年のクリスマスイブも vim plugin を書いて
vim とイチャラブすることができたので満足しています---ッ!!!

明日は vim派 xcoder の 救世主 @jugglershu さんです!!

俺達の vim advent calendar はまだ始まったばかりだ!!!!!