El %
operador de Vim salta a paréntesis, termina comentarios y algunas otras cosas. Sin embargo, no coincide con las etiquetas XML (o cualquier otra etiqueta, que yo sepa).
¿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.
Respuestas:
Hay un complemento vim llamado matchit.vim. Puede encontrarlo aquí: http://www.vim.org/scripts/script.php?script_id=39 . Fue creado más o menos el propósito exacto que usted describe.
Instale eso, coloque el cursor en el cuerpo de la etiqueta (no el <>, de lo contrario coincidirá con esos) y presione% para saltar a la otra etiqueta. Vea la página del script para averiguar qué más coincide.
fuente
runtime macros/matchit.vim
debería habilitarlo y permitir%
que coincidan las etiquetas XML.packadd! matchit
a.vimrc
para habilitarlo. Leer más:help matchit
Puede hacer esto sin complementos adicionales:
Otra operación útil es: vit- seleccionará el contenido de la etiqueta (interior).
Actualización (gracias a @elrado) Ejemplo: vitole permitirá seleccionar el contenido interno de la etiqueta y posicionar el cursor al comienzo del texto seleccionado.
Referencia: /superuser/182355/how-can-i-select-an-html-tags-content-in-vim
Referencia de Vim (gracias a @Geek por señalar esto):
obtendrás:
fuente
cit
cambia el i nterior de la etiqueta - sólo el contenido.cat
cambiar un ll de la etiqueta - el contenido y un lso la propia etiqueta, tanto en apertura y cierre.El OP declaró 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 coincidentes, 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 "yank" en modo normal. (
:help y
)a
oi
puede usarse para la selección de objetos después de un operador comoy
o dentro de una selección visual. El símbolo despuésa
oi
especifica lo que debe seleccionarse. El tipo de objetot
utilizado aquí indica una etiqueta SGML. (:help object-select
)Por supuesto,
<motion>
solo significa moverse a algún lugar por el medio que elija yp
coloca el texto extraído en esa ubicación.fuente
i
significa "dentro" (o "interior").a
significa "a"?a
significa "todos".a
significa alrededor . Tiene más sentido para mí.Solo mi truco de usar "tirar", "seleccionar objeto" (seleccionar etiqueta) y "saltar al último texto".
saltar a la derecha antes de cerrar la etiqueta
y
saltar a la derecha después de abrir la etiqueta
Nota: esto cambiará el contenido del registro predeterminado
fuente