vimの起動が遅いときの対策

提供: neovim/vim入門
移動: 案内検索
スポンサーリンク

vimのプラグインなどを増やしていくとvimの起動が遅くなってしまいます。遅くなる原因を特定する方法や解決策を提供します。

概要

vimは、起動時間が短いソフトウェアです。

しかしながら、vimの設定を大量に書いたり、vimのプラグインを追加していくと、だんだん、起動時間が長くなっていきます。

遅くなる原因

一般的にプログラムがなぜ遅くなるかと同じです。

  • 設定ファイルが長い
  • vimのプラグインが多い
  • vimスクリプトの書き方がイマイチ
    • 行が長い
    • 関数が長い
    • ロジックが複雑
    • 実行時間が長いコマンドを実行している

時間がかかっているところを特定する

vimには、起動時にかかった時間を調べることができます。

$ vim -h |fgrep -e --startuptime
   --startuptime <file> 起動にかかった時間の詳細を <file> へ出力する

以下のコマンドラインでvimを起動すると、指定したファイルに時間の詳細が出力されます。

$ vim --startuptime /tmp/startuptime.txt

以下、測定結果の例です(部分的に省略しています)。

times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

000.023  000.023: --- VIM STARTING ---
000.288  000.265: Allocated generic buffers
000.625  000.337: locale set
000.651  000.026: GUI prepared
000.657  000.006: clipboard setup
000.677  000.020: window checked
003.335  002.658: inits 1
003.351  000.016: parsing arguments
003.356  000.005: expanding arguments
003.408  000.052: shell init
004.310  000.902: Termcap init
004.419  000.109: inits 2
004.646  000.227: init highlight
005.745  000.461  000.461: sourcing /local/share/vim/vim74/ftoff.vim
007.078  000.663  000.663: sourcing /.vim/neobundle.vim/autoload/neobundle/util.vim
008.446  002.347  001.684: sourcing /.vim/neobundle.vim/autoload/neobundle.vim
009.027  000.303  000.303: sourcing /.vim/neobundle.vim/autoload/neobundle/init.vim
010.530  001.020  001.020: sourcing /.vim/neobundle.vim/autoload/neobundle/config.vim
010.741  000.056  000.056: sourcing /local/share/vim/vim74/ftoff.vim
...
188.279  183.313  098.609: sourcing $HOME/.vimrc
188.302  000.343: sourcing vimrc file(s)
189.338  000.738  000.738: sourcing /.vim/neosnippet/plugin/neosnippet.vim
...
448.575  016.280: loading plugins
448.616  000.041: inits 3
450.024  001.408: reading viminfo
450.257  000.233: setup clipboard
450.308  000.051: setting raw mode
450.362  000.054: start termcap
450.607  000.245: clearing screen
453.642  000.410  000.410: sourcing /.vim/syntastic/autoload/syntastic/log.vim
454.727  003.710: opening buffers
470.123  005.849  005.849: sourcing /.vim/HybridText/syntax/hybrid.vim
472.256  011.680: BufEnter autocommands
472.265  000.009: editing files in windows
479.418  007.153: VimEnter autocommands
479.428  000.010: before starting main loop
...
619.307  116.929: first screen update
619.325  000.018: --- VIM STARTED ---

解決策

  • 不要なプラグインを外す
  • コードを短くする
  • 遅いコマンドは実行しない

関連項目




スポンサーリンク