この前vim_fold.vim 作ったんだけど、これが結構重い。 foldmethod=expr ではその性質上折り畳みレベルを計算するために該当関数が全行に対して呼ばれる。行数が多ければ当然重くなる。呼び出されるタイミングについては help に明記されていないのだけれど、どうやらテキストが変更されるたびに呼ばれているっぽい。つまり1文字入力する度にバッファの行数分関数が呼ばれる。まままじか!? こりゃたまらんぞ プラグイン側である程度は最適化できるかもしれないけれどたかが知れてるし、何よりこの程度で重いのでは他の同タイプのプラグインでも同じ問題が起きるだろう。 と言うわけで、対処法の一例を紹介することにする。 この設定で Insert mode に入った際に一時的に foldmethod=manual に変更し、Normal mode に戻った際に再び foldmethod=expr