Coc.nvimを触ってみようアドベントカレンダー 4日目 – coc-jedi
Coc.nvimを触ってみよう Advent Calendar 2021 4日目です。
今回は coc-jedi
です。
coc-jedi について
Pythonのjedi-language-serverをcoc.nvimで利用可能にするラッパーです。coc.nvimのPython拡張にはcoc-pyrightもありますが、今回は触れません。
coc-jedi をインストールする
vimを起動した状態で以下のコマンドを実行します。
:CocInstall coc-jedi
併せてjedi-language-serverをインストールします。専用のvirtualenv環境を作成しておいた方がトラブル回避にも役立ちます。
pyenv install 3.9.7 pyenv virtualenv 3.9.7 neovim3 ~/.anyenv/envs/pyenv/versions/neovim3/bin/pip3 install jedi-language-server
設定した仮想環境をcoc-settings.jsonに追記します。
:CocConfig { "jedi": { "enable": true, "startupMessage": false, "executable.command": "~/.anyenv/envs/pyenv/versions/neovim3/bin/jedi-language-server" } }
ログでの動作確認時は適当なpyファイルを開いて行います。なければ vim test.py
等でも問題ありません。
vim test.py :CocCommand workspace.showOutput Choose by number: 1. jedi Type number and <Enter> or click with the mouse (q or empty cancels): 1 # Select jedi
使ってみる
以下のように、pythonコードの編集中に補完等が働くようになります。
また、coc-jedi特有の便利機能が存在します。基本的にcoc-settings.jsonにて有効にすることで動作しますが、幾つかは環境依存の設定となります。
coc-jedi経由で指定パスのライブラリをインポートする
特定パスのライブラリを一時的にパス通した上で使おうとする場合に環境変数の順序等で問題が発生しがちですが、coc-jediの設定にてjedi-language-serverを通して編集中に限定して通すことも可能です。
例えば foo/dummy.py
を編集中にのみimportしたい場合には以下のように設定を入れます。
{ "jedi.workspace.extraPaths": ["foo"] }
あとがき
最近はSaaS側に高性能なエディタが用意されていることもあって、個人的にvim上で編集する機会は減り気味です。ただ、動作環境の更新等による移行時には欠かせません。また、jedi-language-server
のインストール先仮想環境のバージョンのメンテナンスも忘れないようにしましょう。