前回 Vim の packadd を使って、起動速度改善をした。
その後 MacVim Kaoriya に Timer 機能が追加されたバージョンが出たので、Timer に置き換えた。
.vimrc は以下みたいな感じで定義。
let s:plugins = [ \ 'vim-l9', \ 'vim-fuzzyfinder', \ 'vim-fuzzyfinder-plugins', \ 'yankround.vim', \ ] let s:idx = 0 function! PackAddHandler(timer) execute 'packadd ' . s:plugins[s:idx] let s:idx += 1 "doautocmd BufReadPost autocmd! lazy_load_bundle endfunction augroup lazy_load_python autocmd! VimEnter *.py call timer_start(1, 'LazyLoadPython', {'repeat': 0}) augroup END augroup lazy_load_filetype autocmd! VimEnter *.go,*.js,*.php call timer_start(1, 'LazyLoadFileType', {'repeat': 0}) augroup END augroup lazy_load_bundle autocmd VimEnter * call timer_start(1, 'PackAddHandler', {'repeat': len(s:plugins)}) augroup END
function! LazyLoadPython(timer) abort let _ft = &filetype packadd jedi-vim packadd pyflakes-vim packadd vim-autopep8 packadd vim-virtualenv " Reload autocmd exec 'doautoall BufRead' " For Quickrun.vim exec 'set ft=' . _ft autocmd! lazy_load_python endfunction function! LazyLoadFileType(timer) abort let _ft = &filetype echomsg string(_ft) if _ft =~ 'go' packadd vim-ft-go packadd vim-go-extra packadd vim-godef elseif _ft =~ 'javascript' packadd! vim-javascript packadd! vim-jsx packadd vim-jsdoc elseif _ft =~ 'php' packadd vmustache packadd pdv endif exec 'doautoall BufRead' " For Quickrun.vim exec 'set ft=' . _ft autocmd! lazy_load_filetype endfunction
~/.vim/pack/ftbundle にファイルタイプごとのプラグインを入れている。
ftbundle は Timer を使って、Vim 起動後にバックグラウンドでプラグインを読み込む。
他のプラグインは ~/.vim/pack/bundle/start というところに入れて、起動時に読み込むようにしている。
これで起動速度がどうなったかというと、vim-plug と比べてみた。
vim-plug の速度。
357.614 030.946: opening buffers 359.083 001.469: BufEnter autocommands 359.089 000.006: editing files in windows 359.430 000.341: VimEnter autocommands 359.436 000.006: before starting main loop 360.991 001.555: first screen update 360.993 000.002: --- VIM STARTED ---
packadd の速度。
132.434 030.058: opening buffers 132.907 000.473: BufEnter autocommands 132.913 000.006: editing files in windows 134.438 000.653 000.653: sourcing /Users/s_ohyanagi/.vim/pack/bundle/start/unite.vim/autoload/unite/custom.vim 139.671 004.501 004.501: sourcing /Users/heavenshell/.vim/pack/bundle/start/vim-watchdogs/autoload/watchdogs.vim 143.496 010.225 005.071: sourcing /Users/heavenshell/.vim/config/plugins.vim 143.862 000.724: VimEnter autocommands 143.868 000.006: before starting main loop 145.161 001.293: first screen update
起動速度が大体倍ほど速くなった。