ftplugin/vim_fold.vimの機能が$VIM/syntax/vim.vimに実装されてた件
ftplugin/vim_fold.vimっていうのはこれ。id:thincaさん製。
thinca/vim-ft-vim_fold · GitHub
で、これはVimスクリプトでfunction〜endfunctionとかaugroup〜augroup ENDを折り畳んでくれたりと非常に賢い折り畳みを提供してくれますが、'foldexpr'オプションを使っていて如何せん重かった。
しかし、ふと$VIM/syntax/vim.vim見てみたら本体に実装されてるじゃないですか。
しかも'foldexpr'オプションを使わない形で。
お世話になった事だしエントリ書きますか。という流れ。
ちょうどVim Advent Calendarの期間中ではあるものの、量的にAdvent Calendarの記事にするのは断念しました...
g:vimsyn_folding
Vimスクリプトの折り畳みを設定するには、.vimrcでg:vimsyn_foldingという変数を設定します。
" augroup: a " function: f " lua: l " perl: p " ruby: r " python: P " tcl: t " mzscheme: m let g:vimsyn_folding = 'af'
有効にしたい折り畳みの部分を表わす1文字をg:vimsyn_foldingに含めるようにします。
上の例だとaugroup〜augroup ENDとfunction〜endfunctionの折り畳みのみ有効にしています。
余談
syntax pluginはなぜかhelpないものが多くて、たまに覗くとこういう隠し機能があったりするので覗いてみるといいですよ。