Dies 'foldmethod'
ist eine fensterlokale Option. Das Einstellen von Ihrem ~/.vimrc
hat nicht unbedingt den richtigen Effekt.
Da die html
Syntaxfaltung an den Dateityp gebunden ist , gehören diese Einstellungen zu ~/.vim/after/ftplugin/html.vim
:
setlocal foldmethod=syntax
Dies hängt davon filetype plugin on
ab ~/.vimrc
, was Sie wahrscheinlich in Ihrem haben. Sie können dort auch andere verwandte Optionen konfigurieren, z foldcolumn=4
.
Beachten Sie auch, dass das Standard-HTML-Syntax-Skript (ab Vim 7.4.1830) bisher nur ein mehrzeiliges Tag selbst faltet, nicht den Text zwischen dem öffnenden und dem schließenden Tag .
Also, das wird gefaltet:
<div
class="foo"
style="width: 100"
>
Das geht aber nicht:
<div>
<b>stuff in between</b>
</div>
Um dies zu erreichen, müssen Sie das Syntax-Skript erweitern, z. B. über Folgendes, das am besten in ~/.vim/after/syntax/html.vim
:
Alternative 1
Das Falten wird zwischen allen außer leeren HTML-Elementen durchgeführt (solchen, die kein schließendes Geschwister haben, wie <br>
). Beigetragen von @zanona; Vielen Dank!
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
Alternative 2
Folding erfolgt zwischen bestimmten ausdrücklich Struktur benannt (zB <head>
), Absatzebene (zB <p>
, <li>
) und Zusatz (zB <script>
) HTML - Tags.
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