vim - personalizado - cursores
vim: ¿Cómo puedo reemplazar un carácter que está debajo de mi cursor por texto extraído anteriormente(más de una vez)? (5)
Digamos que he arrastrado 3 caracteres "foo" en mi portapapeles usando una selección visual + tirón, es decir: ''vllly''
Luego moví mi cursor a otro personaje (llamémosle a este personaje x) en la línea 5, que me gustaría reemplazar con lo que hice anteriormente, es decir, foo.
Puedo usar ''p'' para pegar foo después de x, o ''P'' para pegar foo antes de x, pero quiero reemplazar x con foo.
Puedo usar ''vp'' para reemplazar x con foo, pero esto solo funciona una vez, ya que me deja con x en mi portapapeles. En otras palabras, si me muevo a la siguiente aparición de xy pulso vp nuevamente, no lo reemplaza con foo.
Claro, podría hacer una búsqueda / reemplazo usando: s / x / foo / gc y luego ignorando todas las apariciones de x que no deseo reemplazar, pero esto es un poco tedioso de escribir, particularmente cuando todo lo que necesito do es reemplazar 2 o 3 ocurrencias de x que están muy cerca de mi cursor pero no en la misma línea (es decir: líneas 2, 3 y 7).
Entonces actualmente estoy usando: 2,7s / x / foo / gc pero me pregunto si hay una manera de mover mi cursor a x y presionar [insertar el botón mágico aquí] para reemplazarlo por foo. Y luego puedo pasar a la siguiente aparición de x y presionar [botón mágico] de nuevo y boom, se reemplaza x con foo nuevamente.
Por mucho que me duela usar esta analogía, imagine que está escribiendo en el bloc de notas, y selecciona 3 caracteres, presiona Ctrl + c para copiarlos en su portapapeles, y luego resalte x, y presione Ctrl + v para reemplazarlo foo. A continuación, resalta otra x y presiona Ctrl + v nuevamente, y así sucesivamente.
¿Cómo hago esto en vim?
¿Qué pasa con s<Cr>0
, esto se puede repetir con .
-
s
borra el carácter debajo del cursor y lo pone en modo de inserción. -
<Cr>0
inserta el registro 0, que contiene el texto extraído.
También puede usar s
escribir foo
manualmente, que también se puede repetir con .
Copie su "foo" en otro registro, por ejemplo, registre un:
"sí
A continuación, seleccione visualmente el carácter que desea reemplazar con "foo" y presione
"aP
Esto es menos que ideal, pero si tira de la memoria intermedia con nombre a
(por ejemplo, jalar con "ay
), puede usar x"aP
. Use su mapa favorito para que sea una sola pulsación de tecla.
Lo necesito tan a menudo, escribí un complemento para eso: ReplaceWithRegister .
Este complemento ofrece un comando gr
dos-en-uno que reemplaza el texto cubierto por un {movimiento}, línea (s) completa (s) o la selección actual con el contenido de un registro; el texto antiguo se borra en el registro del agujero negro, es decir, se ha ido.
Pegar desde el registro 0 con v"0p
.