neocomplcacheでスニペット補完

かなり更新が滞っている。。。
そろそろ書きたいなぁ〜と思いつつ日々が過ぎていました・・・。
最近は、MacVim一本でExtJSのコーディングしたりRailsの勉強したりしていますが、
やっとvimにも馴れてきたかな。と実感している今日この頃です。

以前、neocomplcacheのスニペット補完よりsnipMateの方が使いやすかったと書きましたが、
そのときに作者様より、「neocomplcacheではプレースホルダの中にプレースホルダが定義できる」と
コメントを頂いたので、neocomplcacheでスニペット補完を試しました。(かなり前にですが。。。)

vimrcの設定

まず、vimrcの設定で、スニペット展開のキーマッピングとスニペットファイルの配置場所を定義します。

" スニペットファイルの配置場所
let g:NeoComplCache_SnippetsDir = '~/.vim/snippets'

" TABでスニペットを展開
imap <expr><TAB> neocomplcache#plugin#snippets_complete#expandable() ? "\<Plug>(neocomplcache_snippets_expand)" : "\<TAB>"
smap <TAB> <Plug>(neocomplcache_snippets_expand)

“neocomplcache#plugin#snippets_complete#expandable()”と”neocomplcache_snippets_expand”を使用して、
snipMateの様にTABキーでスニペットが展開できるようにしています。

“g:NeoComplCache_SnippetsDir”では、スニペットファイルの配置場所を指定しています。
自分で定義したスニペットファイルは、このフォルダに置いています。
以前は標準のスニペットファイルに追記していたのですが、neocomplcacheをアップデートしたときに
上書きされてしまって面倒なことになったので、自分で定義するスニペットファイルは
“g:NeoComplCache_SnippetsDir”で標準の場所とは別の場所に配置することをオススメします。

また、”g:NeoComplCache_SnippetsDir”を定義している場合、標準のものよりこちらのスニペットファイルを優先するそうです。
詳しくはヘルプに載っていたのでそちらを参照下さい。

便利なコマンド

  • NeoComplCacheEditSnippets

スニペットファイルを編集するときに使うコマンドです。

引数にファイルタイプを指定すると、それに対応するスニペットファイルが表示されます。
指定しない場合は、編集中のファイルのファイルタイプに対応するスニペットファイルが表示されます。

このコマンドの便利なところは、編集したスニペットファイルが再ロードされるので、
変更した定義がすぐ反映されるところです。

私は、NeoComplCacheEditSnippetsと打つのが面倒だったので、”Nes”で開くようにしました。

		command! -nargs=* Nes NeoComplCacheEditSnippets <args>
	

  • NeoComplCachePrintSnippets

編集中のファイルタイプで使用できるスニペットが表示できます。

スニペットはneocomplcacheが自動的に補完リストを表示してくれますが、
自分の意図しないスニペットが展開されたときなどは、
このコマンドを使って変な定義がされていないか確認しています。

所感

いろいろ調べているとneocomplcacheの方が便利なコマンドがあったり、
プレースホルダの中にプレースホルダが定義できたりと、こちらの方が使いやすかったです。
ってことで、今はneocomplcache一本で満足しています。