2011-06-07 18 views
58

tengo el siguiente fragmento de código en un archivo que abrí en Vim:Cómo eliminar las etiquetas HTML, no el contenido en Vim

<p>Hello stackoverflow!</p> 

¿Cómo puedo eliminar <p> y </p> etiquetas conservando su contenido entre ¿ellos? Es decir, lo que debería presionar para finalizar con:

Hello stackoverflow! 

Sé que presionar dit a hacer lo contrario.

Estoy usando Janus.

Respuesta

69

Con el plugin surround.vim instalado, presione dst a d elete s en los alrededores t ag.

atajos similares:

  • ds( - Eliminar rodea paréntesis ()
  • ds" - Eliminar rodea comillas dobles ""
  • ds' - eliminar las comillas simples que rodean ''

y así sucesivamente ... (1) respuesta

+0

Esa es la solución para mí. Gracias. – retro

+1

Esta debería ser la respuesta más votada, ¡ya que todo el mundo debería estar usando el increíble plugin TPopes en estos días! :) – walialu

+0

Conocí 'di ...' y 'da ...' pero aprendí 'ds ...'. ¡Tan útil! –

3

Ubicación a una tecla de su elección:

vat<Esc>da>`<da> 

Tomado de http://vim.wikia.com/wiki/Delete_a_pair_of_XML/HTML_tags

+0

Gracias, he visto que también. Pero quiero mapearlo de la misma manera que dit. Por ejemplo, al punto. – retro

+1

@retro por lo general no es una buena idea asignarlo a "punto", ya que sombrea otros comandos vim muy útiles, es decir, "sola repetición" –

+0

Sí, lo entiendo ahora. – retro

76

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

yitvatp 

Lo esto lo hace es:

  • y - tirones
  • it - el interior de la etiqueta
  • vat - selecciona toda la etiqueta
  • p - pastas el texto previamente arrancado sobre ella
+4

forma muy elegante de hacerlo. – Benoit

+0

¡Muy bien Randy! Estoy usando el complemento surround.vim, por lo que la respuesta de Benoit es realmente la solución para mí. – retro

+1

Muy agradable. Publiqué una respuesta complementaria para dar un poco más de detalles. Gracias Randy! – Rob

6

amor de Randy y yo acaban de aprender acerca de los bloques de la etiqueta!Esta es solo una respuesta suplementaria.

So yit significa "tirón del bloque de etiqueta interno" y vat significa "ir al modo visual y seleccionar a (entero) bloque de etiquetas".

Esto es sólo 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. 
Cuestiones relacionadas