
¿Cómo puedo configurar Vim para que cuando cambie un miembro de un par de etiquetas HTML coincidentes, el otro cambie automáticamente para que coincida?
Por ejemplo: dado <span>content</span>
, quiero cambiar <span>
a <div>
, y luego el cierre </span>
cambia automáticamente a </div>
. De manera óptima, esto sucedería al regresar del modo de inserción al modo normal, pero estaría bien si tuviera que presionar una combinación de teclas especial para que esto suceda.
Respuesta1
el excelenteenvolvente.vimhace que esto sea simple: con el cursor en cualquier lugar dentro de la etiqueta que desea cambiar, en modo normal, escriba cst<div>
( c
hange s
urrounding t
ag to <div>
). El nombre de la etiqueta se cambiará a "div" tanto en la etiqueta de apertura como en la de cierre, y volverá al modo normal.
Respuesta2
Aquí hay algunos pasos:
- Coloque el cursor en la primera etiqueta.
- Seleccione el código html externo presionando: vat.
Presione Escpara salir del modo visual y escriba:
:'<,'<s/span/div/ :'>,'>s/span/div/
Tenga en cuenta que
:'>,'>s/span/div/
no funcionará correctamente si hay dos apariciones de la misma etiqueta de cierre en la misma línea, ya que siempre cambiará la primera. Para solucionarlo, utilice::'>,'>s/.*\zsspan/div/
en su lugar. Ver:¿Cómo cambiar la última aparición de la cadena en la línea?
Relacionado:
Respuesta3
el vimacompañarEl complemento puede hacer esto:
Respuesta4
Con elSwapIt: intercambiador de palabras clave extensible, puede definir grupos de etiquetas que luego se pueden alternar mediante <C-a>
/ <C-x>
. Por ejemplo, en ~/.vim/ftplugin/html_swapit.vim
:
SwapList layout p div span
Si tiene etiquetas de inicio y fin en la misma línea (y solo hay una de ese tipo), puede editar ambas a través de miComplemento ChangeGlobally.
También hay varios complementos "multicursor", que le permiten marcar ciertas palabras y editarlas todas a la vez.