vimで折りたたみの状態を保存する方法
vimを使ってそれなりに経つのに、最近になって設定したのでメモ。
vimにはmkview
という、現在の折りたたみの状態を保存するコマンドと、
loadview
という保存した折りたたみ状態を読み込むコマンドがある。
もちろん自分でコマンドを入力するのはめんどくさいので、 ファイルを保存した時と読み込んだ時に勝手にコマンドを実行して欲しい。
ということでautocmd
を使って、勝手に実行してくれるようにするわけだが、
先人が色々なことを考慮した上で mkview
とloadview
を自動呼び出しする設定を
公開してくれている。
細かい説明もリンク先に書いてあるので、自分はリンク先の設定をそのまま以下のようにコピペしただけ。
" Save fold settings. autocmd BufWritePost * if expand('%') != '' && &buftype !~ 'nofile' | mkview | endif autocmd BufRead * if expand('%') != '' && &buftype !~ 'nofile' | silent loadview | endif " Don't save options. set viewoptions-=options
1つ躓いたところとして、Go言語を開いて保存したときには、その時点での折りたたみが保存されずに 全て折りたたまれる、という現象が起きた。
少し探ってみると、vim-goの設定で、保存時に自動でfmtをかける機能がONなのが原因だった。
ということで、vim-goの設定の一部を以下のように変更して、Fmt
コマンドを自動で行ってくれる設定を追加した。
" Not working " let g:go_fmt_autosave = 1 let g:go_fmt_autosave = 0 autocm BufWritePre *.go silent Fmt
これで大規模なコードをvimで見てもストレスなくコードが書けるように!