Come sostituire una singola parola sotto il cursore?


144

Come posso sostituire una parola sotto il cursore in Vim.

Quindi, invece di usare dwquindi ila parola e poi Esc, esiste una combinazione più semplice per sostituire la parola sotto il cursore?

Risposte:


251
ciw

(cambia la parola interna) cambierà l' intera parola sotto il cursore. Confrontare con

cw

che cambierà la parola solo dalla posizione corrente del cursore . Per maggiori informazioni vedi questa domanda / risposta SO .


Come affrontare la situazione se la parola contiene punti o barre (es. /usr/bin/bashO 1222.333)? Sembra che VIM interpreti /e .come la fine della parola e non selezionerà l'intera stringa.
Alexander Cska,

85

Mi ritrovo spesso a voler sostituire una parola con un'altra che ho strappato altrove. Il problema con le altre soluzioni è che se si tenta di modificare una parola, allora la vostra prossima pasta sarà essere quella parola che è stato eliminato con cw.

Prova quanto segue:

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". 

Spero che sia quello che stavi cercando.


7
Funziona bene, ma solo se è necessario effettuare la sostituzione once. Se devo sostituire un paio di second' by primi »(nel tuo esempio), la parola copiata diventa seconddopo il primo rimpiazzo.
ViFI,

32

ciw

c   change
iw  inner word

Ciò eliminerà la parola sotto il cursore (anche se il cursore si trova da qualche parte nel mezzo della parola) e accederà alla modalità di inserimento.


Vedi anche la documentazione di Vim per riferimento:

:help c
:help text-objects

17

Se vuoi cambiare una parola con una parola precedentemente strappata, c'è un'altra soluzione viwp(dopo aver strappato la prima parola).

ciwrimuove la parola precedente e ti mette in modalità inserimento dove si trovava. Ma poi puoi usare ctrl+r, 0per inserire il contenuto del registro 0 (che contiene la parola precedentemente strappata).

Così:

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

Funziona meglio che viwpperché dopo il primo utilizzo è possibile eseguire ripetutamente la sostituzione con .. Inoltre, non passa alla modalità visiva ed evidenzia brevemente.


1
Non sei sicuro di cosa tu voglia dire che non cambia modalità, al contrario sembra essere il caso, ma forse è quello che volevi, rimanere in modalità insert. Ma un grande vantaggio è che questo (contrariamente a viwp) può essere fatto più volte con un solo strattone. Grazie!
Palo,

Oh hai ragione, stavo pensando di entrare in modalità visiva, a cura di. Non mi rendevo conto che era un limite di viwp- nemmeno .lo duplica.
Connor

3
Questa è di gran lunga la soluzione migliore quando abbiamo già strappato la parola sostitutiva.
mljrg,

1
Questa è la risposta! La capacità di usare .con questo è grande!
Irritante il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.