L' 'foldmethod'
option est une fenêtre locale; le définir à partir de votre ~/.vimrc
n'a pas nécessairement le bon effet.
Étant donné que le pliage de la syntaxe est lié au type de html
fichier , ces paramètres appartiennent à ~/.vim/after/ftplugin/html.vim
:
setlocal foldmethod=syntax
Cela dépend de l'avoir filetype plugin on
dans votre ~/.vimrc
, ce que vous avez probablement. Vous pouvez également y configurer d'autres options connexes, par exemple foldcolumn=4
.
Notez également que jusqu'à présent (à partir de Vim 7.4.1830), le script de syntaxe HTML par défaut ne plie qu'une balise multiligne elle-même, pas le texte entre la balise d'ouverture et de fermeture .
Donc, cela se replie:
<div
class="foo"
style="width: 100"
>
Mais cela ne veut pas:
<div>
<b>stuff in between</b>
</div>
Pour cela, vous devez étendre le script de syntaxe, par exemple via ce qui suit, le mieux placé dans ~/.vim/after/syntax/html.vim
:
Alternative 1
Le pliage est effectué entre tous les éléments html sauf vides (ceux qui n'ont pas de frère de fermeture, comme <br>
). Contribué par @zanona; Merci!
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
Le pliage est effectué entre certains de structure explicitement nommé (par exemple <head>
), l' alinéa niveau (par exemple <p>
, <li>
) et accessoires (par exemple <script>
) des balises 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