vimでpython3を書く時のおすすめの補完設定

f:id:kazy1991:20121203044656j:plain

今回目指すvimの環境

  • 出来るだけはやくて,ストレスのないモダンなvim環境
  • 今回はneocompleteとjediの連携を行います

導入するもの

  • バージョン7.4でluapythonインターフェースが使えるvim
  • jedi.vim (オムニ補完も出来る優秀なpython用の多機能プラグイン)
  • neocomplete.vim (有名な補完プラグインの最新版)

最新のvimのインストール

neocomplete.vimは内部でluaを使っていて,jediがpythonを使っているので,luapythonのインターフェースが使えてかつそれなりに新しいvimをインストールします.

色々な方法がありますが,私はこちらの記事を参考にしました.
homebrewを使ってちょっと新しめのMacVim KaoriYaを使おう

homebrewを使うことでハードルも低く導入できるのでお勧めです.
もちろんkaoriya版以外のmacvimのレシピもあります.

jedi.vimの導入

日本人でvimmerなら大抵の人が Neobundleを使ってると思うので,

NeoBundle 'davidhalter/jedi-vim'

これで導入出来ます.

また,jedi.vimはjediというpythonプラグインに依存しているので, jediのプラグインのディレクトリ内で

git submodule update --init

をすることで,使えるようになります.

neocomplete.vimの導入

neocompleteも, Neobundleを使ってるなら,

NeoBundle 'Shougo/neocomplete.vim'

で導入出来ます.

neocompleteとjediを連携させるために以下の設定を書きます.

autocmd FileType python setlocal omnifunc=jedi#completions

let g:jedi#auto_vim_configuration = 0

if !exists('g:neocomplete#force_omni_input_patterns')
        let g:neocomplete#force_omni_input_patterns = {}
endif

let g:neocomplete#force_omni_input_patterns.python = '\h\w*\|[^. \t]\.\w*'

これで快適な補完環境が出来ました.

おまけ jediの補完の際に出てくるDocを非表示にしたい

この画像のように,補完候補を選択するたびに上にDocっぽいものがデフォルトだと表示されるのですが,画面がずれて見難いので非表示にしました
本来は設定で非表示にしたかったんですが,どうにもその項目がなさそうだったので直接プラグインを書き換えました

plugin/jedi_vim.pyを

-                         info=PythonToVimStr(c.doc),  # docstr
+                         info=PythonToVimStr(''),  # docstr

こんな感じに変更すると出なくなります.