foldの設定が重かったので。。。
vimで、foldを使うと、超コードを読みやすくなる。
foldの機能は、開いているテキスト(コード)を折りたたんでくれる or 自分で設定して折り畳むことができる、というもの
でも、、、
foldmethod=syntax
とか、
foldmethod=expr
とかだと、重い。他のプラグインとの相性も疑ったけど、それ自体がやっぱり重い。
重いと感じるのは、insert modeの時。
入力の遅延を感じるので、そのまま使うことは、text editorとしてNGだろう。
でも落ちたたみたい。
できれば、手動じゃなく、自動でやりたい。
前提
foldするときの好みの追加設定として、foldlevelとfoldnestmaxを指定している。
- foldlevel
- どのレベルから折りたたむか。0だと、全て折りたたまれる。
- foldnextmax
- どのレベルの深さまで折りたたむか。設定しないとずっと折り畳む。
個人的な好みは、
set foldlevel=1 set foldnestmax=2
対応1:foldmethodを変更
試しに、indent基準で、foldの設定をしてみた
set foldmethod=indent set foldlevel=1 set foldnestmax=2
いいんだけど、どんなindentにも折りたたまれてしまうの。
対応2:FileTypeを指定
いつもはrubyのコードをいじるので、rubyに限定する。
indentもある程度は基準を持って対応しているので、それほど苦にならない。
それ以外は、manual設定
set foldmethod=manual autocmd FileType ruby :set foldmethod=indent autocmd FileType ruby :set foldlevel=1 autocmd FileType ruby :set foldnestmax=2
これだけでも、文字入力の遅延はかなり解消された。
対応3;モードに追従+foldmethod=syntax
で、もうちょっと調べてたら、insert modeの時に、ということを設定している人を発見。
http://d.hatena.ne.jp/thinca/20110523/1306080318
参考にして、間違ってるかも知れないけど、こんな設定にしてみた。
set foldmethod=syntax set foldlevel=1 set foldnestmax=2 augroup foldmethod-syntax autocmd! autocmd InsertEnter * if &l:foldmethod ==# 'syntax' \ | setlocal foldmethod=manual \ | endif autocmd InsertLeave * if &l:foldmethod ==# 'manual' \ | setlocal foldmethod=syntax \ | endif augroup END
insert modeのときだけ、foldmethod=manualに設定する。
それ以外は、syntax。
やっぱり、自分の使うツールは、使いやすくするために改良を加えないと!