vim-users.jp

Hack #185: neocomplcacheの設定について知る 中編

Posted at 2010/11/27
このエントリーをはてなブックマークに追加

中編では、主にneocomplcacheのキーマッピングについて解説をします。

設定例

    " Plugin key-mappings.
    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>"

    " Recommended key-mappings.
    " <CR>: close popup and save indent.
    inoremap <expr><CR>  neocomplcache#smart_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()

    " AutoComplPop like behavior.
    "let g:neocomplcache_enable_auto_select = 1

imap <C-k> <Plug>(neocomplcache_snippets_expand)

<C-k>でスニペットの展開をできるようにします。<C-k>が取られてしまうのが気に入らない場合は、 後述するneocomplcache#sources#snippets_complete#expandable()を使ったほうが良いでしょう。 smapも同時に設定しないと、デフォルト値が選択されているときに展開やジャンプがされません。

inoremap <expr><C-g> neocomplcache#undo_completion()

前回行われた補完をキャンセルします。

inoremap <expr><C-l> neocomplcache#complete_common_string()

補完候補のなかから、共通する部分を補完します。ちょうど、シェルの補完のような動作です。

imap <expr><TAB> neocomplcache#sources#snippets_complete#expandable() ? “\<Plug>(neocomplcache_snippets_expand)” : pumvisible() ? “\<C-n>” : “\<TAB>”

SuperTabの挙動をエミュレーションしています。スニペットが展開可能なら展開を、補完中なら次の候補を選択、そうでなければ<Tab>を挿入します。 普通の人には必要がないため、コメントアウトをしています。

inoremap <expr><C-h> neocomplcache#smart_close_popup().”\<C-h>”

<C-h><BS>を押したときに確実にポップアップを削除します。 これがなくてもneocomplcacheは動作しますが、このマッピングを使ったほうが確実です。 特に、g:neocomplcache_enable_auto_selectを有効にしている場合はこの設定をしないと確実に補完が誤爆します。

inoremap <expr><C-y> neocomplcache#close_popup()

現在選択している候補を確定します。 これがなくてもneocomplcacheは動作しますが、このマッピングを使ったほうが確実です。

inoremap <expr><C-e> neocomplcache#cancel_popup()

現在選択している候補をキャンセルし、ポップアップを閉じます。 これがなくてもneocomplcacheは動作しますが、このマッピングを使ったほうが確実です。 特にneocomplcacheは実装の関係で、2回<C-e>を押さなければポップアップを閉じることができません。 よって、このマッピングは設定しておくことをお勧めします。

let g:neocomplcache_enable_auto_select = 1

AutoComplPopのように最初の候補を選択するための設定です。 便利ですが誤爆しやすいため、デフォルトでは無効化しています。 この設定を有効化する場合、キーマッピングを工夫する必要があります。

Shougo

もどる
blog comments powered by Disqus