sangrías - sangría francesa en html
¿Cómo puedo ordenar una sangría de un archivo HTML en VI? (9)
¿Has intentado utilizar el script de sangría HTML en el sitio de Vim?
¿Cómo soluciono la sangría de sus enormes archivos html que estaba todo en mal estado?
Probé el comando usual "gg = G" , que es lo que uso para corregir la sangría de los archivos de código. Sin embargo, no parecía funcionar bien en los archivos HTML. Simplemente eliminó todo el formato.
También intenté establecer :filetype = xml
, para ver si engañarlo haciéndole creer que se trataba de un archivo XML ayudaría, pero aún no lo hizo.
Aquí hay una solución de gran peso que te sangra, además de todas las impresiones lindas HTML que no necesariamente quieres preocuparte mientras editas.
Primero, descarga Tidy . Asegúrese de agregar el binario a su ruta, para que pueda llamar desde cualquier ubicación.
A continuación, cree un archivo de configuración que describa su sabor HTML favorito. La documentación no es excelente para Tidy, pero aquí hay una overview y una lista de todas las opciones . Aquí está mi archivo de configuración:
bare: yes
break-before-br: no
clean: yes
drop-proprietary-attributes: yes
fix-uri: yes
indent-spaces: 4
indent: yes
logical-emphasis: yes
markup: yes
output-xhtml: yes
quiet: yes
quote-marks: yes
replace-color: yes
tab-size: 4
uppercase-tags: no
vertical-space: yes
word-2000: yes
wrap: 0
tidyrc_html.txt
como tidyrc_html.txt
en su carpeta ftplugin
(en vimfiles).
Un archivo más: agregue la siguiente línea a (o cree) html.vim
, también en ftplugin
:
map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>
Para usarlo, simplemente abra un archivo HTML y escriba /tidy
. (Esa /
es la clave <leader>
)
¡Aquí tienes! No es una solución rápida, de ninguna manera, pero ahora está un poco mejor equipado para editar esos enormes archivos HTML en mal estado.
Como tylerl explica más arriba, configure lo siguiente:
:filetype indent on
:set filetype=html
:set smartindent
¡Sin embargo!
Tenga en cuenta que en vim 7.4 las etiquetas html
, head
, body
y algunas otras no están sangradas de forma predeterminada. Esto tiene sentido, ya que casi todo el contenido de un archivo html cae bajo esas etiquetas. Si realmente quieres, puedes hacer que esas etiquetas se sangren así:
:let g:html_indent_inctags = "html,body,head,tbody"
Con la filetype indent on
dentro de mi .vimrc
, Vim sangrías bastante bien los archivos HTML.
Ejemplo simple con un shiftwidth
de shiftwidth
de 2:
<html>
<body>
<p>
text
</p>
</body>
</html>
El principal problema al utilizar la sangría inteligente es que si el XML (o HTML) se encuentra en una línea, ya que puede terminar volviendo de una solicitud curl, entonces gg=G
no funcionará. En cambio, acabo de experimentar una buena sangría usando ordenada directamente llamada desde VI:
:!tidy -mi -xml -wrap 0 %
Básicamente, esto le dice a VI que llame a limpiar para ordenar un archivo XML que no envuelva las líneas para que quepan en las 68 líneas anchas predeterminadas. Procesé un gran archivo XML de 29 MB y me tomó 5 o 6 segundos. Supongo que para un archivo HTML, el comando debería ser:
:!tidy -mi -html -wrap 0 %
Espero que esto pueda ayudar.
Esta es mi solución que funciona muy bien para abrir HTML "feo" de una manera muy bien espaciada:
vim fileIn.html -c "set sw=2 | %s/>/>/r/ | execute ''normal gg=G'' | set nohlsearch | g/^//s*/$/d"
El comando sw
es porque mi valor predeterminado es 4, que es demasiado alto para HTML.
La siguiente parte agrega una nueva línea (Vim piensa que es un retorno de carro, suspiro) después de cada elemento ( >
)
Luego vuelva a sangrar todo el archivo con =
Entonces unhighlight >
(desde que he set hlsearch
en mi vimrc)
Luego, elimine todas las líneas vacías / solo de espacio en blanco (consulte here para obtener más información; también se escapó por duplicado porque está en el caparazón)
Incluso puedes agregar | wq! fileOut.html
| wq! fileOut.html
| wq! fileOut.html
hasta el final si no quieres ingresar Vim, solo limpia el archivo.
Hay varias cosas que todos deben estar en su lugar. Solo para resumirlos todos en un solo lugar:
Establezca la siguiente opción:
:filetype indent on
:set filetype=html # abbrev - :set ft=html
:set smartindent # abbrev - :set si
A continuación, mueva el cursor a la parte superior del archivo y sangría hasta el final: gg
=G
O seleccione el texto deseado para sangrar y presione = para sangrarlo.
Puede integrar tanto tidy como html-beautify automática instalando el complemento vim-autoformat . Después de eso, puede ejecutar cualquier formateador instalado con una sola pulsación de tecla.
Uso este script: https://github.com/maksimr/vim-jsbeautify
En el enlace de arriba tienes toda la información:
- Instalar
- Configurar (copiar desde el primer ejemplo)
- Ejecutar
:call HtmlBeautify()
¡Hace el trabajo maravillosamente!