¿Cómo reemplazar una sola palabra debajo del cursor?

144

¿Cómo reemplazo una palabra debajo del cursor en Vim?

Entonces, en lugar de usar dwluego ila palabra y luego Esc, ¿hay una combinación más simple para reemplazar la palabra debajo del cursor?

dice
fuente

Respuestas:

251
ciw

(cambiar palabra interna) cambiará la palabra completa debajo del cursor. Comparar con

cw

que solo cambiará la palabra desde la posición actual del cursor . Para obtener más información, consulte esta pregunta / respuesta SO .

Brian Agnew
fuente
¿Cómo lidiar con la situación si la palabra contiene puntos o barras (por ejemplo, /usr/bin/basho 1222.333)? Parece que vim interpreta /y .como el final de la palabra y no seleccionará toda la cadena.
Alexander Cska
85

A menudo me encuentro con ganas de reemplazar una palabra con otra que he sacado de otra parte. El problema con las otras soluciones es que si se intenta cambiar una palabra, entonces su siguiente pasta será ser esa palabra que ha eliminado con cw.

Intenta lo siguiente:

1 "This first word should overwrite the second"

yiw     yank inner word (copy word under cursor, say "first").
...     Move the cursor to another word (say "second").
viwp    select "second", then replace it with "first". 

Espero que sea lo que estabas buscando.

Etéreo
fuente
77
Funciona bien, pero solo si se debe hacer un reemplazo once. Si tengo que reemplazar un par de second' by first` (en su ejemplo), la palabra copiada se convierte seconddespués del primer reemplazo.
ViFI
32

ciw

c   change
iw  inner word

Esto eliminará la palabra debajo del cursor (incluso si el cursor está en algún lugar en el medio de la palabra) y entrará en modo de inserción.


Consulte también la documentación de Vim para referencia:

:help c
:help text-objects
Xophmeister
fuente
17

Si desea cambiar una palabra con una palabra previamente eliminada, hay otra solución para viwp(una vez que haya eliminado la primera palabra).

ciwelimina la palabra anterior y lo pone en modo de inserción donde estaba. Pero luego puede usar ctrl+r, 0para insertar el contenido del registro 0 (que contiene la palabra previamente extraída).

Entonces:

yiw
[move to next word]
ciw
ctrl+r
0

Esto funciona mejor que viwpporque después del primer uso, puede realizar el reemplazo repetidamente .. Tampoco cambia al modo visual y se resalta brevemente.

Connor
fuente
1
No estoy seguro de lo que quiere decir que no cambia los modos, parece ser lo contrario, pero tal vez eso es lo que quería, permanecer en modo de inserción. Pero una gran ventaja es que esto (al contrario de viwp) se puede hacer varias veces con solo un tirón. ¡Gracias!
Palo
Oh tienes razón, estaba pensando en entrar en modo visual, editado. No me di cuenta de que eso era una limitación viwp, incluso .no lo duplica.
Connor
3
Esta es, con mucho, la mejor solución cuando ya hemos eliminado la palabra de reemplazo.
mljrg
1
¡Esta es la respuesta! ¡La capacidad de usar .con esto es genial!
izzy
1

Intente cw, como en 'cambiar palabra'.

Utilice http://linuxmoz.com/vi-commands-cheat-sheet/ o cualquier otra hoja de referencia como referencia.

Kosma Dunikowski
fuente
1
Eso funciona, pero solo enmendará los caracteres a la derecha del cursor
Brian Agnew