vim でpython を開いたり、editorconfig 等python に依存する特定のライブラリを使用する場合、起動速度が遅くなることがあります。vim --startuptime vim.log
とオプションを指定しvim を起動すると、実際にどこが遅いのか確認をすると、python の部分で大きく速度が遅いことがあります。
この部分ですが、python のpath の解決に時間がかかっているようなので、python のpath 情報をvimrc に記述することで早くなります。
.vimrc
letg:python_host_prog = expand('~/.pyenv/shims/python2')letg:python3_host_prog = expand('~/.pyenv/shims/python3')
しかしこれでは早くなりませんでした。 ~/.pyenv/shims/python
を確認すると、これはpython バイナリではないことが分かりました。
pyenv の場合、python バイナリは ~/.pyenv/versions
以下にあります。
.vimrc
letg:python_host_prog = expand('~/.pyenv/versions/miniconda2-latest/bin/python2')letg:python3_host_prog = expand('~/.pyenv/versions/miniconda3-latest/bin/python3')
しかし、バージョンをハードコーディングするのはイケていないため、どうにかします。$ pyenv which python3
とすることで、python バイナリのpath が出てくるので、このコマンドをvimrc 内で実行します。
.vimrc
letg:python_host_prog = systemlist('pyenv which python2 2>/dev/null || which python2')[0]
letg:python3_host_prog = systemlist('pyenv which python3 2>/dev/null || which python3')[0]
vim の system
では、末尾の改行も含まれてしまうため、 systemlist
の先頭要素を取得します。
また、pyenv でない場合は which python
の結果で良いため、pyenv を使用していない場合のフォールバックとして指定しておきます。
これによって起動が0.2秒ほど早くなりました。