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'
解説
嬉しい点
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 はまだ始まったばかりだ!!!!!