物置き

マルチバイトを含まない大きめのファイルを開くと時間がかかる

自分のPCで、大きめのファイル(20MByteくらい)をVimで開いた時に、
同じファイルを他のテキストエディタと開いた時と比べて
妙に時間がかかることがあって、いったい何だろうなあと思いつつもそのまま放置していたのだけど、
ふと思い立ち、調べたので以下にメモ。

環境はWindows版のVim7.2(Kaoriya版)。

原因

Kaoriya版に標準添付されている、verifyenc.vimが原因だった。

このプラグインはファイルを開いた時(BufReadPostイベント発生時)に
VerifyEncodingという関数を呼ぶ。
この関数では、開いたファイルの&fencが正しいかを調べているらしいのだけど、
処理のはじめの方で、ファイル内にマルチバイト文字が含まれるかどうかをsearch()関数でチェックしている。
マルチバイトを含まないファイルで、「マルチバイトがあるかどうか」という検索をすると、結果的にファイルを丸ごと検索してしまうことになる。
マルチバイトかどうかを判断するパターン('[^\t -~]')も相まって、時間がかかってしまうみたい。よくわからないけど。


そんなわけなので、非Kaoriya版だとこの現象にでくわすことはなさそう。

対応

g:verifyenc_enableという変数に0を設定しておくと、
このプラグインの機能が無効になる。これで特に時間がかかることはなくなった。

とりあえずこれでしばらく様子を見て、
問題なさそうであれば削除するとかでよさげ。
(せっかく添付してくださってるものを削除するのもなんだけど)