Salta a las etiquetas XML correspondientes en Vim
(4)
El operador de %
Vim salta a paréntesis que coinciden, finales de comentarios y algunas otras cosas. Sin embargo, no coincide con las etiquetas XML (o cualquier otra etiqueta, según mi leal saber y entender).
¿Cuál es la mejor manera de saltar a la etiqueta XML correspondiente usando Vim?
Nota: Lo que realmente quiero hacer es duplicar una sección en un archivo XML sin buscar manualmente la etiqueta correspondiente.
El OP indicó que lo que realmente quería hacer era copiar una sección de XML sin tener que encontrar la etiqueta correspondiente. Esto se hace fácilmente en modo normal con yat<motion>p
, que tira del texto dentro e incluye las etiquetas que coinciden, luego lo pega. yit<motion>p
es casi lo mismo, pero no incluye las etiquetas externas.
La ''y'' en la cadena es, por supuesto, el comando de "yank" de modo normal. ( :help y
)
a
o i
se puede usar para la selección de objetos después de un operador como y
o dentro de una selección visual. El símbolo después de a
o i
especifica qué se debe seleccionar. El tipo de objeto t
utilizado aquí indica una etiqueta SGML. ( :help object-select
).
Por supuesto, <motion>
solo significa moverse a algún lugar por el medio que elijas y p
coloca el texto arrastrado en esa ubicación.
Hay un complemento vim llamado matchit.vim. Puede encontrarlo aquí: http://www.vim.org/scripts/script.php?script_id=39 . Fue creado básicamente para el propósito exacto que describes.
Instálelo, coloque el cursor en el cuerpo de la etiqueta (no en <>, de lo contrario coincidirá con esos) y presione% para saltar a la otra etiqueta. Vea la página del script para descubrir qué más coincide.
Puedes hacer esto sin complementos adicionales:
- coloca el cursor en la etiqueta
- v a t - seleccionará la etiqueta (externa) y colocará el cursor en el extremo
- Una vez que tenga su selección, puede alternar entre la parte superior e inferior con o ( actualización basada en la nota de Michael Gruber )
- c - cambie o, y - copie o, escape para salir del modo visual ...
Otra operación útil es: v i t - seleccionará el contenido de la etiqueta (interno).
Actualización (gracias a @elrado) Ejemplo: v i t o le permitirá seleccionar el contenido interno de la etiqueta y posicionar el cursor al comienzo del texto seleccionado.
Referencia: https://superuser.com/questions/182355/how-can-i-select-an-html-tags-content-in-vim
Referencia de Vim (gracias a @Geek por anotar esto):
:help visual-operators
obtendrás:
4. Operating on the Visual area *visual-operators*
The objects that can be used are:
...
at a <tag> </tag> block (with tags) |v_at|
it inner <tag> </tag> block |v_it|
...
Solo mi truco de usar "tirón", "selección de objeto" (selección de etiqueta) y "saltar al último texto arrastrado".
yit`]
para saltar a la derecha antes de cerrar la etiqueta
y
yit
para saltar a la derecha después de abrir la etiqueta
Nota: esto cambiará el contenido del registro predeterminado