Home > Vim Hacks > Hack #89: 自動補完をさらに使いこなす

Hack #89: 自動補完をさらに使いこなす

[Hack #49: ]自動補完を活用する 後編ではneocomplcacheの基本的な特徴について解説しました。ここではneocomplcacheの良くある質問について簡単に回答しようと思います。設定の参考になれば幸いです。

neocomplcacheで辞書補完をするには?

辞書ファイルへのパスは、変数g:NeoComplCache_DictionaryFileTypeListsに格納されています。 パスを設定すれば、ファイルを開いたときに自動的に読み込まれます。 例えば、私は次のように設定しています。defaultはファイルタイプに関係なく参照される辞書ファイルです。

let g:NeoComplCache_DictionaryFileTypeLists = {
            \ 'default' : '',
            \ 'vimshell' : $HOME.'/.vimshell_hist',
            \ 'scheme' : $HOME.'/.gosh_completions'
            \ }

自動補完が重い

g:NeoComplCache_KeywordCompletionStartLengthの値を増やすか、g:NeoComplCache_SkipCompletionTimeを増やす(例えば’0.3′)と少しイライラが解消されるでしょう。あまりやりすぎると、なかなか自動補完の候補が出なくなります。基本的には自動補完は重い処理なので、あまり性能の低いPCで有効にするものではありません。

Insertmodeでカーソル移動すると補完されて大変

この現象は、autocomplpop.vimでも起こります。neocomplcacheやautocomplpopは挿入モードでのカーソル位置移動をトリガーとして、補完候補をポップアップするようになっているからです。計算中にキー入力が続くと、neocomplcacheは補完をスキップしますが、挿入モードでカーソルキーを使うこと自体、Vimの使用方法として間違っています。

neocomplcacheでスニペット補完を使用するには?

まずはスニペットの展開にKey-mappingを割り当ててください。初期状態ではどのキーにも割り当てられていません。 スニペットのトリガーを補完するか直接入力してから、割り当てたスニペットの展開キーを押すことで展開されます。 展開キーを連打すると、プレースホルダの移動になります。

imap <silent>L     <Plug>(neocomplcache_snippets_expand)
smap <silent>L     <Plug>(neocomplcache_snippets_expand)

オムニ補完が重い

オムニ補完のためのキーワード設定は、変数g:NeoComplCache_OmniPatternsに格納されています。 ファイルタイプをキーとしているので、無効にしたいファイルタイプの正規表現を空にするとオムニ補完が呼ばれなくなります。 例えば、htmlのオムニ補完を無効にするためには、次のようにします。

let g:NeoComplCache_OmniPatterns['html'] = ''

他のプログラミング言語にも対応させたい

補完するためのキーワードの設定は、変数g:NeoComplCache_KeywordPatternsに格納されています。 ファイルタイプをキーとして、キーワードにマッチする正規表現を設定すれば、任意のプログラミング言語に対応します。

Vimのファイル名補完やオムニ補完の呼び出しをneocomplcache組み込みのものに置き換えたい

neocomplcacheに組み込まれているファイル名補完やオムニ補完は、クイックマッチや補完スキップに対応するなど、細かな部分で改良されています。 Vim標準の補完呼び出しを置き換えるためには、次のようにKey-mappingを定義します。

inoremap <expr><C-x><C-f>  neocomplcache#manual_filename_complete()
inoremap <expr> <C-j>  &filetype == 'vim' ? "\<C-x>\<C-v>\<C-p>" : neocomplcache#manual_omni_complete()

Vimで巨大なファイルを開くと、キャッシュ生成で待たされる

neocomplcacheはファイル読み込みを監視し、新たなファイルを開くと、自動的にキーワードをキャッシュするようになっています。 巨大なファイルの場合、このキャッシュを生成する動作が邪魔になることがあります。g:NeoComplCache_CachingLimitFileSizeの値を調節することで、巨大なファイルはキャッシュしないように設定することが可能です。初期値は1000000となっているので、約1メガバイト以上のファイルはキャッシュしません。手動でキャッシュさせるには、:NeoComplCacheCachingBufferコマンドを使用します。

補完がおかしい、クイックマッチが効かない

completeoptに問題があるのだと思います。補完動作がおかしくなるので、longestやmenuは指定しないでください。お勧めはmenuoneを指定することです。クイックマッチが正しく動作するようになります。previewを追加するかどうかはお好みで。

Shougo
このエントリーをはてなブックマークに追加
はてなブックマーク - Hack #89: 自動補完をさらに使いこなす
Share on Facebook
Post to Google Buzz
Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://vim-users.jp/2009/10/hack89/trackback/
Listed below are links to weblogs that reference
Hack #89: 自動補完をさらに使いこなす from Vim-users.jp

Home > Vim Hacks > Hack #89: 自動補完をさらに使いこなす

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top