vimでpython3を書く時のおすすめの補完設定
今回目指すvimの環境
- 出来るだけはやくて,ストレスのないモダンなvim環境
- 今回はneocompleteとjediの連携を行います
導入するもの
- バージョン7.4でluaとpythonインターフェースが使えるvim
- jedi.vim (オムニ補完も出来る優秀なpython用の多機能プラグイン)
- neocomplete.vim (有名な補完プラグインの最新版)
最新のvimのインストール
neocomplete.vimは内部でluaを使っていて,jediがpythonを使っているので,luaとpythonのインターフェースが使えてかつそれなりに新しい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
こんな感じに変更すると出なくなります.