A little bit of everything

情報系大学院生の備忘録

jedi-vim を導入してVimでPythonコードの補完をさせる

VimPythonコードの補完をさせたい

VimPythonコードの補完をさせるプラグインとして、jedi-vimというプラグインがあるそうです。今回はこれを導入します。(導入するところまでを説明します)

jediとは?

jedi は Pythonソースコードのオートコンプリート(自動補完)と静的解析ができるツールです。そして今回導入するjedi-vimは、jedi のVimプラグインということです。
ちなみに jedi の読み方は「ジェダイ」です。ジェディじゃないです。作者はきっとスターウォーズのファンなんだと思います。
Jedi - an awesome autocompletion/static analysis library for Python — Jedi 0.12.1 documentation

やること

今回は以下の2つを行います。Vimがインストールされていることが前提です。

  1. dein.vim の導入
  2. jedi-vim の導入

当方の環境

  • 環境は、macOS High Sierra(バージョン 10.13.5)

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がインストールされました。

↓実行結果 f:id:yuukiyg:20180728233908p:plain

この段階では、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を立ち上げると、自動でアップデートが走り、プラグインが読み込まれます。
f:id:yuukiyg:20180729141317p:plain このようなメッセージが出れば成功です。


dein.vimの使い方まとめ

以上のように、dein.vimVimプラグインを読み込ませるときには、
プラグインのインストール

.vimrc を編集して dein.vimからそのプラグインを読み込ませる
という手順を踏みます。

2. jedi-vimの導入

(1) jedi-vimのインストール

以下のコマンドを打って、jedi-vimをインストールします。
pip3 install --user jedi

(2) dein.vimでjedi-vimVimに読み込ませる

.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を読み込んでくれます。うまくいくと以下のようなメッセージが出ます。
f:id:yuukiyg:20180729150101p:plain

正しくインストールされていれば、Vim内のコマンドで :help jedi-vim と打てば、以下のような画面が出ると思います。
f:id:yuukiyg:20180729150350p:plain

以上までが jedi-vimのインストールです。

.py ファイルを Vimで開き、 .(ドット)を押すと補完機能が働いているのがわかるかと思います。 f:id:yuukiyg:20180729152134g:plain

jedi-vimの詳細な設定について

jedi-vimはこの他にも自分で色々とカスタマイズして使うことができます。
今回はjedi-vimの導入までを触れたので、詳細な設定などは他のWebページを参照してください。

Vimメモ : jedi-vimでPythonの入力補完 - もた日記