2011-08-22 17 views
47

¿Hay algún complemento para doblar etiquetas HTML en Vim?
¿O hay otra forma de configurar un atajo para doblar o desplegar etiquetas html?
Me gustaría doblar/desplegar etiquetas html al igual que hago con el plegado de muescas.Cómo doblar/desplegar etiquetas HTML con Vim

+0

'set foldmethod = sintaxis' funciona para HTML –

Respuesta

69

He encontrado zfat (o, igualmente, zfit) funciona bien para doblar con documentos HTML. za alternará (abrirá o cerrará) un pliegue existente. zR abre todos los pliegues en el documento actual, zM efectivamente reactiva todos los pliegues existentes marcados en el documento.

Si usted se encuentra utilizando pliegues ampliamente, podría hacer algunas combinaciones de teclas útiles para sí mismo en su .vimrc.

+0

Su respuesta solo funciona en el método de plegado del manual, y no puede trabajar en otros métodos de plegado. – soarinblue

14

Si indentar HTML el siguiente debería funcionar:

set foldmethod=indent 

El problema con esto, encontrar, ¿hay demasiados pliegues. Para evitar esto, uso zO y zc para abrir y cerrar pliegues anidados, respectivamente.

Ver help fold-indent para más información:

The folds are automatically defined by the indent of the lines. 

The foldlevel is computed from the indent of the line, divided by the 
'shiftwidth' (rounded down). A sequence of lines with the same or higher fold 
level form a fold, with the lines with a higher level forming a nested fold. 

The nesting of folds is limited with 'foldnestmax'. 

Some lines are ignored and get the fold level of the line above or below it, 
whichever is lower. These are empty or white lines and lines starting 
with a character in 'foldignore'. White space is skipped before checking for 
characters in 'foldignore'. For C use "#" to ignore preprocessor lines. 

When you want to ignore lines in another way, use the 'expr' method. The 
indent() function can be used in 'foldexpr' to get the indent of a line. 
+0

Intente configurar fdl = 3 para cerrar los pliegues de tercer nivel y más por defecto; zc aún cierra los pliegues abiertos. – JRG

3

Instalar js-beautify de comandos (versión de JavaScript)

npm -g install js-beautify 
wget --no-check-certificate https://www.google.com.hk/ -O google.index.html 
js-beautify -f google.index.html -o google.index.bt.html 

http://www.google.com.hk html orignal:

http://www.google.com.hk orignal

js-beautif Y y vim doble:

js-beautify and vim fold

2

Añadir a responder por James Lai. Inicialmente mi foldmethod = sintaxis por lo que zfat no funcionará. solución es establecer la foldemethod el manual

:setlocal foldmethod=manual 

para comprobar qué foldmethod en uso,

:setlocal foldmethod? 
2

html plegable con la sintaxis foldmethod, que es más simple.

Esta respuesta se basa en HTML syntax folding in vim. el autor es @Ingo Karcat.

  1. si establece un método de plegado es la sintaxis con lo siguiente:

    línea de comando vim :set foldmethod=syntax

    o poner el ajuste en ~/.vim/after/ftplugin/html.vim

    setlocal foldmethod=syntax 
    
  2. También tenga en cuenta hasta ahora, el la secuencia de comandos de sintaxis predeterminada solo dobla una etiqueta de varias líneas , no el texto entre la etiqueta de apertura y la de cierre.

    So, this gets folded: 
    
         <div 
          class="foo" 
          id="bar" 
         > 
    
        And this doesn't 
    
         <div> 
          <b>text between here</b> 
         </div> 
    
  3. para conseguir doblada entre las etiquetas, es necesario extender la secuencia de comandos de sintaxis, a través de la siguiente, el mejor lugar en ~/.vim/after/syntax/html.vim

    El plegado de sintaxis se realiza entre todos, pero los elementos HTML vacíos (aquellos que don 't tienen un hermano de cierre, como <br>)

    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 
    
0

primer lugar set foldmethod=syntax y pruebe zfit para doblar la etiqueta de inicio y zo para desplegar las etiquetas, Funciona bien en mi vim.

Cuestiones relacionadas