La 'foldmethod'
es una opción de ventana local; configurarlo desde su ~/.vimrc
no necesariamente tiene el efecto correcto.
Debido a que el plegado de sintaxis está vinculado al tipo de html
archivo , estas configuraciones pertenecen a ~/.vim/after/ftplugin/html.vim
:
setlocal foldmethod=syntax
Esto depende de tener filetype plugin on
en tu ~/.vimrc
, lo que probablemente tengas. También puede configurar otras opciones relacionadas allí, por ejemplo foldcolumn=4
.
También tenga en cuenta que hasta ahora (a partir de Vim 7.4.1830), el script de sintaxis HTML predeterminado solo pliega una etiqueta de varias líneas, no el texto entre la etiqueta de apertura y la de cierre .
Entonces, esto se dobla:
<div
class="foo"
style="width: 100"
>
Pero esto no:
<div>
<b>stuff in between</b>
</div>
Para obtener esto, debe extender el script de sintaxis, por ejemplo, a través de lo siguiente, mejor ubicado en ~/.vim/after/syntax/html.vim
:
Alternativa 1
El plegado se realiza entre todos los elementos html, excepto los nulos (aquellos que no tienen un hermano de cierre, como <br>
). Contribuido por @zanona; ¡Gracias!
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
Alternativa 2
El plegado se realiza entre ciertas etiquetas HTML estructurales (p <head>
. Ej. ), De nivel de párrafo (p <p>
. Ej . <li>
) Y auxiliares (p <script>
. Ej. ).
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