'foldmethod'
ウィンドウローカルなオプションです。自分で設定して~/.vimrc
も、必ずしも正しい効果が得られるとは限りません。
構文の折りたたみはhtml
filetypeにバインドされているため、これらの設定は次のものに属します~/.vim/after/ftplugin/html.vim
。
setlocal foldmethod=syntax
これは、にあるかどうかに依存しfiletype plugin on
ます~/.vimrc
。ここで、他の関連オプションを設定することもできますfoldcolumn=4
。
また、これまでのところ(Vim 7.4.1830以降)、デフォルトのHTML構文スクリプトは複数行のタグ自体のみを折りたたみ、開始タグと終了タグの間のテキストは折り返さないことに注意してください。
したがって、これは折りたたまれます:
<div
class="foo"
style="width: 100"
>
しかし、これはしません:
<div>
<b>stuff in between</b>
</div>
これを取得するには、次のように構文スクリプトを拡張する必要があります~/.vim/after/syntax/html.vim
。
代替案1
折りたたみは、voidを除くすべてのhtml要素間で実行されます(などの閉じる兄弟がない要素<br>
)。@zanonaによる寄稿。ありがとう!
syntax region htmlFold start="<\z(\<\(area\|base\|br\|col\|command\|embed\|hr\|img\|input\|keygen\|link\|meta\|para\|source\|track\|wbr\>\)\@![a-z-]\+\>\)\%(\_s*\_[^/]\?>\|\_s\_[^>]*\_[^>/]>\)" end="</\z1\_s*>" fold transparent keepend extend containedin=htmlHead,htmlH\d
代替案2
折りたたみは、明示的に指定された特定の構造(例:)<head>
、段落レベル(例:)<p>
、<li>
および補助(例:) <script>
HTMLタグの間で実行されます。
syntax region htmlFold start="<\z(p\|h\d\|i\?frame\|table\|colgroup\|thead\|tfoot\|tbody\|t[dhr]\|pre\|[diou]l\|li\|span\|div\|head\|script\|style\|blockquote\|form\)\%(\_s*\_[^/]\?>\|\_s\_[^>]*\_[^>/]>\)" end="</\z1\_s*>" fold transparent keepend extend containedin=htmlHead,htmlH\d