jedi-vim を導入してVimでPythonコードの補完をさせる
VimでPythonコードの補完をさせたい
VimでPythonコードの補完をさせるプラグインとして、jedi-vimというプラグインがあるそうです。今回はこれを導入します。(導入するところまでを説明します)
jediとは?
jedi は Pythonのソースコードのオートコンプリート(自動補完)と静的解析ができるツールです。そして今回導入するjedi-vimは、jedi のVim用プラグインということです。
ちなみに jedi の読み方は「ジェダイ」です。ジェディじゃないです。作者はきっとスターウォーズのファンなんだと思います。
Jedi - an awesome autocompletion, static analysis and refactoring library for Python — Jedi 0.18.0 documentation
やること
今回は以下の2つを行います。Vimがインストールされていることが前提です。
当方の環境
1. dein.vimの導入
Vimのプラグインの管理は、プラグインマネージャ(たくさんあるプラグインを管理してくれるソフト)を導入して行うのが一般的なようです。そこで今回は、dein.vimというプラグインマネージャを導入します。
dein.vimとは?
Vimのプラグインマネージャ(たくさんあるプラグインを管理してくれるソフト)で、Shougoさん(Shougo (Shougo) · GitHub)という方が作られたようです。Vim 8.0以上(もしくはNeoVim)で使用できます。
dein.vimの導入
(1) dein.vimインストーラをダウンロード
まずは以下のコマンドを実行してインストーラをダウンロードします。
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
作業しているディレクトリに、installer.sh というシェルファイルができるはずです。
(2) dein.vimのインストール
ダウンロードしてきたインストーラのシェルファイルを、以下のコマンドで実行します。
sh installer.sh {dein.vimのインストールディレクトリのパス}
インストールディレクトリはどこでもOKですが、慣習的に ~/.cache にするそうです。したがって特にこだわりがなければ、
sh installer.sh ~/.cache
とすればよいと思います。
プロンプトの最終行に "Complete setup dein!" と表示されれば終了です。{インストールディレクトリ}の配下に、dein.vimがインストールされました。
↓実行結果
この段階では、dein.vimはインストールされている状態ですが、Vimからそれを認識していません。したがって、次にVimからdein.vimを認識させます。
(3) Vimからdein.vimを読み込ませる
↑の実行結果画像を見てわかるとおり、
Please add the following settings for dein to the top of your vimrc (Vim) or init.vim (NeoVim) file:
と言われています。これをすることで、Vimがdein.vimを読み込み、プラグインの管理ができるようになります。
コンソールに表示されているコードを .vimrcの先頭にコピペします。(.vimrcはVimの設定ファイルのことで、ホームディレクトリ直下である ~/.vimrc に作成するのが一般的です)
私の場合は↓のようなコードを.vimrcに貼り付けました。赤字になっている箇所は人それぞれ違います。
"dein Scripts----------------------------- if &compatible set nocompatible " Be iMproved endif " Required: set runtimepath+=/Users/Yuuki/.cache/repos/github.com/Shougo/dein.vim " Required: if dein#load_state('/Users/Yuuki/.cache') call dein#begin('/Users/Yuuki/.cache') " Let dein manage dein " Required: call dein#add('/Users/Yuuki/.cache/repos/github.com/Shougo/dein.vim') " Add or remove your plugins here: call dein#add('Shougo/neosnippet.vim') call dein#add('Shougo/neosnippet-snippets') " You can specify revision/branch/tag. call dein#add('Shougo/deol.nvim', { 'rev': '01203d4c9' }) " Required: call dein#end() call dein#save_state() endif " Required: filetype plugin indent on syntax enable " If you want to install not installed plugins on startup. "if dein#check_install() " call dein#install() "endif "End dein Scripts-------------------------
ここで、コードの最後の方に書かれている、
" If you want to install not installed plugins on startup.
というコメント部分から、下3行分のコメントアウトを取ります。こんな感じです↓。
" If you want to install not installed plugins on startup. if dein#check_install() call dein#install() endif
こうしておくと、Vimを立ち上げたときに、まだ読み込んでいないプラグインなどがあれば、自動で読み込んでくれるようになります。
dein.vim でプラグインを読み込ませる際は .vimrcの、
" Add or remove your plugins here: call dein#add('Shougo/neosnippet.vim') call dein#add('Shougo/neosnippet-snippets') ・・・
と書かれているところに、Vimに読み込ませたいプラグインを書きます。今の状態だと、neosnippet.vimと、neosnippet-snippetsという2つのプラグインを読み込みなさい、という命令が書かれています。
では、この状態で .vimrcを保存して閉じます。
その後もう一度 vim
コマンドを打ってVimを立ち上げると、自動でアップデートが走り、プラグインが読み込まれます。
このようなメッセージが出れば成功です。
dein.vimの使い方まとめ
以上のように、dein.vimでVimにプラグインを読み込ませるときには、
プラグインのインストール
↓
.vimrc を編集して dein.vimからそのプラグインを読み込ませる
という手順を踏みます。
2. jedi-vimの導入
(1) jedi-vimのインストール
以下のコマンドを打って、jedi-vimをインストールします。
pip3 install --user jedi
(2) dein.vimでjedi-vimをVimに読み込ませる
.vimrcのdein.vimの以下を追加します。
call dein#add('davidhalter/jedi-vim')
こんな感じになると思います。
・・・(省略) if dein#load_state('/Users/Yuuki/.cache/') call dein#begin('/Users/Yuuki/.cache/') ・・・(省略) " Add or remove your plugins here: call dein#add('Shougo/neosnippet.vim') call dein#add('Shougo/neosnippet-snippets') call dein#add('davidhalter/jedi-vim') ・・・(省略) call dein#end() call dein#save_state() endif ・・・(省略)
.vimrcを保存して閉じます。
再度Vimを開くと、自動でVimが jedi-vimを読み込んでくれます。うまくいくと以下のようなメッセージが出ます。
正しくインストールされていれば、Vim内のコマンドで :help jedi-vim
と打てば、以下のような画面が出ると思います。
以上までが jedi-vimのインストールです。
.py ファイルを Vimで開き、 .(ドット)を押すと補完機能が働いているのがわかるかと思います。
jedi-vimの詳細な設定について
jedi-vimはこの他にも自分で色々とカスタマイズして使うことができます。
今回はjedi-vimの導入までを触れたので、詳細な設定などは他のWebページを参照してください。