読者です 読者をやめる 読者になる 読者になる

neocomplcache に乗り換えた。

Vim の自動補完にはずいぶん長く AutoComplPop を使っていたのですが、最近は neocomplcache がモダンらしいとのこと。

neocomplcacheとは?
VimScriptによって実装された究極の補完環境。

Presentation file - neocomplcache - GitHub

確かに、AutoComplPop の日本語入力との相性の悪さが気になってたんですよね。
というか、究極っていいですよね。究極ですよ究極!
ということで、重い腰を上げて乗り換えてみました。


AutoComplPop の各種ファイルを削除してから、vimball で一発インストール。

$ wget -O neocomplcache-5.1.vba http://www.vim.org/scripts/download_script.php?src_id=13456
$ vim neocomplcache-5.1.vba
: source %

.vimrc で起動時に有効化すればすぐ使えるようになりました。

let g:neocomplcache_enable_at_startup = 1

初期設定が素晴らしく、特に設定しなくても快適に動きます。

とは言え、せっかくなのでヘルプを読んでいくつか設定してみました。

" neocomplcache
let g:neocomplcache_enable_at_startup = 1
let g:neocomplcache_max_list = 30
let g:neocomplcache_auto_completion_start_length = 2
let g:neocomplcache_enable_smart_case = 1
"" like AutoComplPop
let g:neocomplcache_enable_auto_select = 1
"" search with camel case like Eclipse
let g:neocomplcache_enable_camel_case_completion = 1
let g:neocomplcache_enable_underbar_completion = 1
"imap <C-k> <Plug>(neocomplcache_snippets_expand)
"smap <C-k> <Plug>(neocomplcache_snippets_expand)
inoremap <expr><C-g> neocomplcache#undo_completion()
inoremap <expr><C-l> neocomplcache#complete_common_string()
"" SuperTab like snippets behavior.
"imap <expr><TAB> neocomplcache#sources#snippets_complete#expandable() ? "\<Plug>(neocomplcache_snippets_expand)" : pumvisible() ? "\<C-n>" : "\<TAB>"
"" <CR>: close popup and save indent.
"inoremap <expr><CR> neocomplcache#smart_close_popup() . (&indentexpr != '' ? "\<C-f>\<CR>X\<BS>":"\<CR>")
inoremap <expr><CR> pumvisible() ? neocomplcache#close_popup() : "\<CR>"
"" <TAB>: completion.
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
"" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplcache#smart_close_popup() . "\<C-h>"
inoremap <expr><BS> neocomplcache#smart_close_popup() . "\<C-h>"
inoremap <expr><C-y> neocomplcache#close_popup()
inoremap <expr><C-e> neocomplcache#cancel_popup()

ほとんどおすすめ設定のままです。
スニペット関連は使ってない(まだ試してない)のでコメントアウトしてます。
あとの挙動は自分の好みで、候補選択のみで改行は挿入しないようにしています。


設定で参考になったリンクを挙げておきます。


neocomplcache の基本機能は十分満足でした。速度も高速です。
個人的なTodoとしては、スニペットを試してみるのと、インクルード補完を使って JavaScript のスマートな補完を実現すること。例えば Google Closure なら、goog.require() をうまく捉えればできるのかな?


それでは究極の補完ライフを!