Cómo reemplazar una palabra con una palabra arrancada en modo normal


25

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 fooy reemplazar barcon lo que tiré antes.

Después de tirar foo, veo las siguientes opciones:

Opción 1

  1. Coloque el cursor sobre barconw

  2. Poner foodelante de barconP

  3. Coloque el cursor sobre el bresto bary elimine la palabra conde

opcion 2

  1. Pon el cursor en la barra con w

  2. Use depara borrarbar

  3. Ponga el contenido del registro 0 con "0P(ya que borré bar, fooya no es accesible con un simple p)

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, Rpero no permite poner lo que se arrancó.

TL; DR : ¿Cómo reemplazar una palabra con el contenido del registro de extracción?

Respuestas:


31

Asumiendo que ya ha tiró foocon yeo algo similar, y que el cursor se encuentra en algún lugar foo, puede utilizar Wvep:

  • Wpara ir a bar(esto es obviamente opcional y dependerá de la posición actual del cursor);
  • v para iniciar el modo visual;
  • epara ir al final de la palabra (también puede usar otros movimientos aquí, como iw);
  • ppara pegar foo; esto reemplazará la selección visual actual (que se coloca en el registro sin nombre "").


6

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 que foopermanezca en el registro de extracción incluso después de la bareliminación.

Con esta solución, el flujo de trabajo después de la extracción foosería:

  • Ir a barcon W(o cualquier palabra necesaria, por supuesto)
  • Usando el "registro de agujeros negros" para eliminar barcon"_de
  • Poniendo foodesde el registro de tirar con P. El registro de tirones todavía contiene foodesde que barentró 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.


3
  1. Ir al inicio de "foo". Presione yiw. Eso tira de la palabra interior.

  2. Vaya a "barra" presionando la letra w. Luego selecciónalo y tira hacia atrás:viw"0p

Yo uso ciwy yiwmucho.


44
El uso de objetos de texto como iwes 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 en plugar de usar el "0registro.
statox

1
  • Cuando el cursor está en cualquier parte de la palabra,

    • yiw- Jale la palabra y guárdela en el 0registro.
  • 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 0registro. Consulte :registerspara 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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.