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

jedi-vimとneocomplete.vimを併用する際に行っておきたい設定

この記事は Vim Advent Calendar 2013 53日目の記事になります。

neocomplete.vim利用者がjedi-vimも使う場合、下記の id:heavenshell さんご指摘の点を不満に思われるのではないかと思います。

jedi.vim の popup_select_first が効かない

これをアドホックな対応ですませないためにはどう設定するとよいかをvim-users.jp – Lingrで質問したところ Shougoさんから下記の設定を教えていただきました。

autocmd FileType python setlocal omnifunc=jedi#completions
"let g:jedi#popup_select_first=0
let g:jedi#completions_enabled = 0
let g:jedi#auto_vim_configuration = 0
let g:neocomplete#force_omni_input_patterns.python = '\%([^. \t]\.\|^\s*@\|^\s*from\s.\+import \|^\s*from \|^\s*import \)\w*'

1行目でomnifuncにjediを用いたneocompleteによる補完が設定され、3,4行目でjedi-vimの補完機能は切る、といった具合のようです。
2行目にcomment outして書いた設定はjedi-vimの機能なのでこれを設定しても意味は無いようです。
(書いても意味が無いので書かないのがいいと思います、という意図です。)
最後の行はimport系についての補完の配慮のようです。
omnifunc以外のneocompleteの機能をdisableしてomnifuncの方に専念させるということのようです。

このissueだけを見ていると3,4行目の設定だけで済ませてしまいそうですが その場合、omnifuncにpythoncompleteが適用され、jediの補完は効いていないようです。 pythoncompleteよりもjediの方が何かとよい(pythoncompleteはjediよりもモタる気がします) ようなので1行目の設定も書かれることをおすすめします。

また id:osyo-manga さんから

わたしは g:neocomplete#sources#omni#functions.python に jedi#completions を設定して使用しているなー

というご意見もいただいたのですが、Shougoさんによると

それでもよいですが、omni sourceは互換性に難があるので動かない補完関数があります
聞いたところによると、jediでも問題が起こるらしい。
詳細はよく分かりません

とのことです。
伝聞調ばかりですみません。以上です。