html vim keyboard-shortcuts janus

Cómo eliminar etiquetas HTML, no los contenidos en Vim



keyboard-shortcuts janus (5)

¡Me encanta la respuesta de Randy (+1) y aprendí sobre bloques de etiquetas! Esta es solo una respuesta suplementaria.

Entonces, yit significa "tirar del bloque de la etiqueta interna" y la IVA significa "ir al modo visual y seleccionar un bloque de etiqueta (completo)".

Esto es solo para aquellos que son demasiado perezosos para leer el archivo de ayuda:

Tag blocks *tag-blocks* For the "it" and "at" text objects an attempt is done to select blocks between matching tags for HTML and XML. But since these are not completely compatible there are a few restrictions. The normal method is to select a <tag> until the matching </tag>. For "at" the tags are included, for "it" they are excluded. But when "it" is repeated the tags will be included (otherwise nothing would change). Also, "it" used on a tag block with no contents will select the leading tag. "<aaa/>" items are skipped. Case is ignored, also for XML where case does matter. In HTML it is possible to have a tag like <br> or <meta ...> without a matching end tag. These are ignored. The text objects are tolerant about mistakes. Stray end tags are ignored.

Tengo el siguiente fragmento de código en un archivo que abrí en Vim :

<p>Hello stackoverflow!</p>

¿Cómo puedo eliminar las etiquetas <p> y </p> pero mantener los contenidos entre ellas? Es decir, ¿qué debo presionar para finalizar?

Hello stackoverflow!

Sé que al presionar haré lo contrario.

Estoy usando Janus .



Con el complemento surround.vim instalado, presione d s t para dar la vuelta a la t ag.

Accesos directos similares:

  • d s ( - eliminar el paréntesis circundante ()
  • d s " - eliminar las comillas dobles que rodean ""
  • d s '' - eliminar las comillas simples que rodean ''''

y así...


Probé la solución dst con surround.vim en un bloque html más grande. Funciona, pero sangra todas las etiquetas secundarias al mismo nivel. No debería cambiar la sangría, lo estropea todo.

La solución de Randys con yitvatp también funciona, pero me deja una línea en blanco antes y después de la etiqueta pegada.

¿Alguna solución perfecta por ahí?


Una solución simple sería (con el cursor en cualquier lugar dentro de la etiqueta):

yitvatp

Lo que esto hace es:

  • y - yanks
  • it - el interior de la etiqueta
  • vat : selecciona toda la etiqueta
  • p - pega el texto previamente arrastrado sobre él