vim-plug で プラグインの遅延ロードを行う
イントロ
最近neovimの起動が もっさり してきました。
プラグインマネージャーにはvim-plugを使っていまます。
こちらの環境で起動時間を改善してみました。
計測
nvim --startuptime ./startup.log
こちらのコマンドで起動時の処理時間が計測できます。
times in msec clock self+sourced self: sourced script clock elapsed: other lines 000.093 000.093: --- NVIM STARTING --- 002.755 002.662: locale set : : (途中省略) : 952.261 000.003: --- NVIM STARTED ---
左端が累計の時間、2番目が実行されている処理の時間です。
:%!sort -r -n -k 2
処理時間別に並び替えて重い処理を抽出できます。
プラグインの遅延ロード
vim-plugでは遅延ロードの種類が限定されています。
onとforをつかって遅延ロードさせるのが常套なのですが、
数秒後に読み込みのような設定はまだないようです。
タイマーで呼び出す
こちらの記事で取り上げられていて試してみたらとても良かったです。
以下のサンプルとしてlspの読み込みを遅延させています。
call plug#begin('~/.vim/plugged') " .. 省略 Plug 'prabirshrestha/vim-lsp', { 'on': [] } Plug 'mattn/vim-lsp-settings', { 'on': [] } " .. 省略 call plug#end() function! s:load_plug(timer) call plug#load( \ 'vim-lsp', \ 'vim-lsp-settings', \ ) endfunction call timer_start(500, function("s:load_plug"))
Plugにonでから配列を設定することで読み込まなくなります。
timer_startで500ms後にs:load_plug関数を呼び出すようにしています。
plug#loadで遅延させる対象のprefix部分の文字列を省いて登録しておくと呼び出せます。
はじめ間違ってPlugに設定している文字列をそのまま渡してしまいエラーになってしまいました。
気をつけて!
計測時に遅くなっているものとあとからロードしても問題なさそうなプラグインを設定して再度計測してみると
952.261ms → 455.829ms になりました。
これでしばらくは快適に過ごせそうです。
参考URL
vim-plug/plug.txt at master · junegunn/vim-plug · GitHub