VimでPython3の補完

広告

まず、Ubuntu14.04のデフォルトVimはPython3をサポートしていない。以下を実行すると:

vim --version | grep python

こう表示される:

広告
-python3

解決方法は二つ。自分でコンパイルしてパラメータを追加するか、既存のPPAを使うか:

sudo apt-add-repository ppa:pi-rho/dev
sudo apt-get update
sudo apt-get install vim

インストールが終わったら、さっきのコマンドを実行してpython3の前がプラスになっているか確認するのを忘れずに。

最新版のjediはPython3をサポートしているので、jediに依存した補完は実現可能だ。

まずjediをインストールする必要がある。インストール方法は公式説明を見てほしい。virtualenvを使うかどうかは各自の需要次第で、私はそのままシステムに入れた。

sudo pip3 install jedi

次に自分のvimにjedi-vimとneocompleteの二つのプラグインをインストールする。vimの設定ではneocompleteをメインにして、jedi-vimを組み合わせる:

元の設定はneocompleteのConfiguration Examplesをそのままコピペすればいいが、いくつか注意点がある:

これを:

autocmd FileType python setlocal omnifunc=pythoncomplete#Complete

こう置き換える:

autocmd FileType python setlocal omnifunc=jedi#completions

それから以下の行を追加する。すでにあれば追加しなくていい:

let g:neocomplete#enable_auto_select = 0
let g:jedi#popup_select_first=0
set completeopt=longest,menuone
let g:jedi#auto_vim_configuration = 0
let g:jedi#popup_on_dot = 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 = '\%([^. \t]\.\|^\s*@\)\w*'

一番重要なのは、jedi-vimとPython-modeというプラグインパッケージが衝突すること。後者を無効にして、後者の中で必要なプラグインを抜き出して個別にインストールするのがおすすめ。

起動時にこんなエラーが出たら:

选区_371.png

Vimのluaサポート呼び出しに問題があるということ。Vimに入って以下を実行:

:lua print('KThentai')

結果はこうなる:

选区_372.png

検索してみるとファイルlibluajit-5.1.so.2の欠落だと分かった。いつ欠落したのかは私も知らない。とにかく入れ直せばいい:

sudo apt-get install libluajit-5.1-2

これでvimでのPython3の補完が正常に動くようになった。今のところPyQt5で一部の文が補完されない以外は全部正常だ。

test2.py + (-HDD-Documents-Python-Study-Study) - VIM_373.png

本家 plumz.me でこの記事にコメントする

コメントは中国語の本家サイトで受け付けています。このミラーは閲覧専用です。

目次