Un patrón de edición con el que me encuentro con frecuencia es el siguiente: quiero tirar de un texto dentro de comillas o corchetes, y reemplazar ese texto dentro de otro par de comillas / corchetes.
Por ejemplo, si quiero copiar el nombre de la clase foo bar
y pegarlo en otro lugar:
<span class="foo bar">
<div class="this-should-be-replaced-with-foo-and-bar">
Lo que sé es esto: si me muevo dentro de la clase del lapso, uso yi"
para tirar del texto dentro de las comillas.
Ahora tengo esto en mi registro, por lo que debería poder reemplazar el contenido de la clase del div con él. Pero no puedo encontrar una manera práctica de hacer esto.
Si uso ciw
esto termina sobrescribiendo mi registro con contenido para cambiar, por lo que pierdo mi texto arrancado.
Lo mejor que se me ocurre es pasar a la primera cita de la clase de div, presionar p
y luego eliminar a la siguiente cita con dt"
.
Por lo general, arruino mi posición, y la pego en algún lugar dentro de las comillas que combinan las dos cadenas, y está arruinando las cosas.
Espero que haya alguna forma de hacer una combinación de "reemplazar el texto interno con mi contenido extraído, por favor" para facilitar esto.
fuente
Puede usar el registro numerado. Primero tira "foo-bar" con
yi"
, que llenará el"0
registro, ver:h "0
. Luego hagaci"<c-r>0
para reemplazar con el contenido del registro 0.Ver
:h i_CTRL-R
para una descripción de la última parte.fuente
yi"
) y pegarlo desde el registro0
donde se almacena después de eliminar el texto para cambiar (ci"<c-r>0
)? En términos de vimgolf ganas 2 pulsaciones de teclas y no te metas con tus registros.CTRL+r
antesa
, eso es lo que<c-r>
significa.ciw
, coloca el texto eliminado en el registro sin nombre, pero los registros se desplazan, es por eso que debe usar en<c-r>0
lugar de<c-r>"
. Ver:h quote_number
."0
registro sólo es rica por el comando tirón y no será perturbado por ejemploc
.Aquí hay otra solución. No es el mejor en términos de Vimgolf, pero usa el registro de agujeros negros:
Una vez que esté en la
foo bar
cuerda, puede tirar de ella normalmenteyi"
.Luego dentro de los corchetes para cambiar:
"_di"P
Cual es:
La ventaja del registro de agujeros negros es que no dañará los demás registros. Ver
:h quote_
para más detalles.(Tenga en cuenta que esta respuesta solo está aquí para hablar sobre el registro de apagón. Personalmente uso la selección visual como lo sugiere @grodzik).
fuente
P
para eso. Cuando coloquedi"
el cursor sobre las últimas citasp
, pegará después, dondeP
pegará antes de la posición actual.Necesito esto con tanta frecuencia, escribí un complemento para simplificar y permitir la velocidad máxima: Reemplazar con registro .
Este complemento ofrece un
gr
comando dos en uno que reemplaza el texto cubierto por un {movimiento} / objeto de texto, líneas completas o la selección actual con el contenido de un registro; el texto antiguo se elimina en el registro de agujeros negros, es decir, se ha ido. Maneja de manera transparente muchos casos de esquina y permite una repetición rápida a través del.
comando estándar . Si no te gusta, su página tiene enlaces a alternativas.fuente