読者です 読者をやめる 読者になる 読者になる

【Vim】Vimの起動が遅い

vim

マカーもどきになってから、Vimの起動が突然重くなりました。
限界突破したので、調べてみました

プラグイン別起動時間の調べ方

起動時に、オプションをつけて起動することで、起動時のプロファイルを出力することができます!(知らなかった…)※ver7.2かららしい

 --startuptime <出力先ファイル名>

これでいつも通り起動するだけです!

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

000.012  000.012: --- VIM STARTING ---
000.204  000.192: Allocated generic buffers
000.735  000.531: locale set
000.744  000.009: clipboard setup
〜省略〜
182.425  004.046  004.046: sourcing /Users/sea_mountain/.vim/bundle/neocomplcashe/autoload/neocomplcache/cache.vim
186.598  032.039: VimEnter autocommands
186.602  000.004: before starting main loop
187.705  001.103: first screen update
187.708  000.003: --- VIM STARTED ---

こんな感じで出力されます。

vi --startuptime hoge.txt

でもいいですが、

vi hoge.html --startuptime hoge.txt

とすると、そのファイル(hoge.html)を開いたときのプロファイルを見れます。
(特定のファイルが読み込み遅いと思ったら、こっちですね。)


気を付けないといけないのは、vimのバージョンによって

vim --startuptime=<出力先ファイル名>

という記述だったり、違うようなので、vim -hで確認しておいたほうが良さそうです。

測定結果

ファイル指定なしで測定したとき
vim --startuptime <出力先ファイル名>

の時、
起動するまでに187.708msec
そのなかで一番重かったのは.vimrcで067.308msecです。

htmlファイルを開いたとき

重さが気になってたのは、htmlやcssファイルを開いた時なので、index.htmlを開いた時のを測定してみました。

vi index.html --startuptime hoge.txt

起動するまでに8568.239msec


…遅すぎます。vimの起動に約8.5秒…しかも軽いファイルで… 開くたびにこの長さだなんて耐えられません。
せっかくのvimのよさが…


一番時間がかかっていたのはcss.vim8102.889msec
どうみてもこれが原因です。

css.vimを削除して実行してみると
444.117msecで起動しました。ちょっと一瞬画面が映らなくなるなー程度になりました。

css.vim

そもそも、css.vimは何かと言うと、cssファイルで#ffffffなど、色が指定されている部分の背景を、その色に変えてくれるプラグインです。
公式サイトのこの画像(http://lanpartei.de/~niklas/vim/after/syntax/css-color-vim.png)が分かりやすいです。
色をブラウザで確認しなくても、大体分かるので、大変使いやすかったのに…。(´・ω・`)


後で検索で知ったのですが、このサイト(http://www.serendip.ws/archives/2607)によると、

256色表示ができるターミナルならば、ターミナル上の Vim でもハイライト表示できる。
ただし、ターミナルでは css、html ファイル編集時に Vim の起動が遅くなってしまった…

追記:ターミナルでの Vim の起動速度の問題は、1つ前のバージョン 0.6 を使えばよい。
ただし、ターミナルでのハイライト表示はできなくなる。

たしかに、前にWindowsのGVimで使っていたときに、遅くなかったので原因がcss.vimだと気づきませんでした…。

css.vimの代わりは?

軽く調べてみたのですが、どのサイトも紹介しているのもcss.vimでした…(下に追記で、代わりのプラグイン紹介しています)
(表記としては、css.vimcss_color.vimです。http://www.vim.org/scripts/script.php?script_id=2150)
先のサイト(http://www.serendip.ws/archives/2607)に書かれていた、rgbにも対応させたというcss.vimも同じくらい重かったです。
それっぽいのも、検索でひっかかりはしたのですが…
http://www.vim.org/scripts/script.php?script_id=2539
中国語?かなにかで書いてありさっぱり…いれてみると、大量のエラーが出たので、すぐやめました…。

    • -

※2011/05/24追記

コメント欄で、代わりのプラグイン教えていただきました!

colorizer(http://www.vim.org/scripts/script.php?script_id=3567)
こんな感じです。

rgb表記にも対応していてこれは使えそうです!\tcコマンドで起動します


colorizerのサイトで、似たプラグインだと紹介されていたのが有ります。
hexHighlight(http://www.vim.org/scripts/script.php?script_id=2937)
ただし、こっちは

hexHighlight only works with a graphical version of vim

と怒られてしまうので、GVimじゃないとダメそうです。

    • -


最初はてっきり、zencoding.vimが原因だと思っていたので(導入した時期的に)、拍子抜けしました…^^;
vim起動のプロファイル出来ることに気づいてなかったら、ひたすら思い当たるプラグイン外してみていたのかな…とか思うと恐ろしいです…