vimでneocomplcacheを使ってTTにHTMLのコード補完をする

Androidアプリ開発メモ」というブログのタイトルですが、サーバサイド開発の際はvimを使ってPerlPHPのコーディングをする事が多いので、たまにはvimの話を書いてみます。
今回はコーディングを快適にするためにneocomplcacheを入れてみましょう。


neocomplcachevimeclipseなどのIDEのようなコード補完を実現するプラグインです。
インストールは以下からzipをダウンロードして、.vimフォルダ以下に展開します。
https://github.com/Shougo/neocomplcache


次に.vimrcに以下のような設定をすると補完が効くようになります。

let g:neocomplcache_enable_at_startup = 1

neocomplcacheは機能が非常に多いためここでは全部の詳しい解説は出来ませんが、以下が参考になると思います。
http://vim-users.jp/tag/neocomplcache/


また、普段テンプレートエンジンはtt(template toolkit)を使用しているため、tt用の補完もしたいのですがデフォルトだと *.tt の拡張子がvimに認識されません。


そこで以下の記事を参考に $HOME/.vimの下にfiletype.vimというファイルを作成します。
snippetsEmu.vimを使っていて、補完が効かない人はfiletypeが原因かもしれない
これでttの補完候補が表示されるようになりました。


ただ、テンプレートを書く際はttのコードだけでなくhtmlのタグも書く事が多いのですが、このままではTTのファイルを編集している時にHTMLの補完が出来ません。


困ったな、、、と思ってたら解決策が見つかりました!

一般的に知られていないことだが、'filetype'は複数の値を設定できる。例えば:setfiletype
c.doxygenなどとピリオドで区切った名前の列によって複数の値を持たせることができる。個人的には、複数の値を持つ場合は「compound
filetype」、通常の値の場合は「simple filetype」と呼び分けている。

http://whileimautomaton.net/2008/09/07213145


上記を参考に、filetype.vim

 au! BufRead,BufNewFile *.tt     setfiletype tt

を以下のように変更

 au! BufRead,BufNewFile *.tt     setfiletype tt.html


これでTT内でHTMLの補完も出来るようになりました!

参考にさせていただいた記事の方々、ありがとうございました。


neocomplcacheはコードのスニペットも補完出来ますし、またスニペット自体を自分で追加出来たりと便利な機能が多いですね。
最初はスニペットの機能があることを知らなかったのでsnipMateなどを入れていましたが、使ってるうちにneocomplcacheだけで足りる事が分かって驚きました。

スニペットについてはCatalystなどの自分がよく使うフレームワーク用に作成して追加していきたいと思います。