Cuando tengo que reemplazar una palabra con otra palabra que utilizo antes, generalmente uso un flujo de trabajo que me parece poco natural:
Digamos que tengo este texto:
foo bar buzz
Y quiero tirar foo
y reemplazar bar
con lo que tiré antes.
Después de tirar foo
, veo las siguientes opciones:
Opción 1
Coloque el cursor sobre
bar
conw
Poner
foo
delante debar
conP
Coloque el cursor sobre el
b
restobar
y elimine la palabra conde
opcion 2
Pon el cursor en la barra con
w
Use
de
para borrarbar
Ponga el contenido del registro 0 con
"0P
(ya que borrébar
,foo
ya no es accesible con un simplep
)
Ambas formas me parecen demasiado complicadas y estoy seguro de que hay una manera más eficiente de lograr esta acción, pero no puedo encontrar cómo. Esta idea sería combinar las acciones eliminar y poner en una sola, o al menos evitar mantener la palabra eliminada en el registro de extracción para que pueda poner la palabra deseada con un simple p
.
También sé que se activó el modo de reemplazo, R
pero no permite poner lo que se arrancó.
TL; DR : ¿Cómo reemplazar una palabra con el contenido del registro de extracción?
fuente
He encontrado otra forma de hacerlo, es un poco similar a la opción 2 pero tiene la ventaja de no alterar el estado de los registros.
La idea es utilizar el " registro de agujeros negros ": este registro es accesible a través de
"_
y tiene la particularidad de que puede escribir en él pero no leerlo, por lo que, como un agujero negro, este registro hace que desaparezca por completo todo lo que entra. Aquí podemos usarlo para quefoo
permanezca en el registro de extracción incluso después de labar
eliminación.Con esta solución, el flujo de trabajo después de la extracción
foo
sería:bar
conW
(o cualquier palabra necesaria, por supuesto)bar
con"_de
foo
desde el registro de tirar conP
. El registro de tirones todavía contienefoo
desde quebar
entró en el agujero negro.No estoy seguro de que sea una mejor solución que la de @ Carpersmoker ( en términos de victorias de vimgolf @Carpetsmoker ) pero no sabía sobre el registro de agujeros negros y pensé que algunos podrían estar interesados en saberlo.
fuente
Ir al inicio de "foo". Presione
yiw
. Eso tira de la palabra interior.Vaya a "barra" presionando la letra
w
. Luego selecciónalo y tira hacia atrás:viw"0p
Yo uso
ciw
yyiw
mucho.fuente
iw
es interesante, pero su solución es en realidad la misma que la de @ CarpetSmoker: seleccionar visualmente la segunda palabra y poner la primera. También creo que su solución funcionaría con un simple enp
lugar de usar el"0
registro.Cuando el cursor está en cualquier parte de la palabra,
yiw
- Jale la palabra y guárdela en el0
registro.Ir a la palabra objetivo para ser reemplazado
ciw
eliminará la palabra y lo pondrá en modo de inserción.ctrl-r
. Aparecerá"
una ventana emergente pidiendo que se invoque el registro.0
pegará la palabra arrancada.Las palabras tiradas se almacenan (¡normalmente!) En el
0
registro. Consulte:registers
para ver los almacenamientos intermedios almacenados. Esto puede parecer un procedimiento largo, en mi humilde opinión, esto abre la puerta a los trucos de registro mucho más sofisticados.fuente