¿Puede vim resaltar etiquetas HTML coincidentes como Notepad++?


VIM tiene soporte para emparejar pares de corchetes, paréntesis y corchetes. Esto es ideal para editar lenguajes de estilo C como PHP y Javascript. Pero, ¿qué pasa con las etiquetas HTML coincidentes?

Notepad++ ha tenido esta característica durante el tiempo que la he estado usando. Ser capaz de detectar dónde comienzan y terminan los bloques de HTML es muy útil. Lo que estoy buscando es algo como esto para vim (ver las etiquetas div verdes):

(una característica adicional: resaltar HTML no cerrado etiquetas, como la etiqueta roja en esta captura de pantalla).

Matchit se ha propuesto como la mejor opción, pero requiere una pulsación de tecla adicional para usar su funcionalidad. Me gustaría poder ver dónde comienzan y terminan los bloques de HTML sin presionar una tecla adicional.

He rastreado Internet para encontrar algo como esto para vim. Al parecer, no soy el único, según 2 otros StackOverflow preguntas y nabble.

Casi he renunciado yo mismo a vim no ser capaz de coincidir visualmente con las etiquetas html. ¿Es posible que vim haga esto?

Anexo: Si actualmente no es posible hacer esto con ningún plugin existente, ¿algún asistente de vimscript tiene algún consejo sobre cómo abordar la escritura de un plugin adecuado?

Author: Community, 2011-11-17

3 answers

Tuve que trabajar con algo de HTML hoy, así que pensé en abordar esto. Añadido un ftplugin a vim.org eso debería resolver tu problema.

Puedes conseguirlo aquí en vim.org .

Puedes obtenerlo aquí en github.

Espero que funcione para usted. Avísame si tienes algún problema.

 212
Author: Greg Sexton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-22 19:17:12

La etiqueta de Greg.vim plugin es impresionante, pero yo quería algo más. Quería que las etiquetas que encierran siempre se resaltaran, no solo cuando el cursor está en una de las etiquetas.

Así que escribí MatchTagAlways que hace todo lo que hace el MatchTag de Greg y también siempre resalta la etiqueta que encierra, sin importar dónde esté el cursor en el código. También funciona con etiquetas no cerradas y lenguajes de plantillas HTML como Jinja o Handlebars.

Aquí hay un GIF que lo muestra en medidas:

MTA en acción

 86
Author: Valloric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-27 21:00:03

Vine aquí buscando corchetes angulares de estilo html coincidentes en Vim. Esto parece funcionar:

:set mps+=<:>
:help matchpairs
 -2
Author: Chris X,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-11 15:23:06