Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to replace a single word under cursor?

Tags:

replace

vim

People also ask

How do I overwrite a word in Vim?

Search for text using / or for a word using * . In normal mode, type cgn (change the next search hit) then immediately type the replacement. Press Esc to finish. From normal mode, search for the next occurrence that you want to replace ( n ) and press . to repeat the last change.

How do I replace a specific word in vi editor?

Press y to replace the match or l to replace the match and quit. Press n to skip the match and q or Esc to quit substitution. The a option substitutes the match and all remaining occurrences of the match. To scroll the screen down, use CTRL+Y , and to scroll up, use CTRL+E .

How do I delete a word in Vim?

To delete a word, position the cursor at the beginning of the word and type dw . The word and the space it occupied are removed. To delete part of a word, position the cursor on the word to the right of the part to be saved. Type dw to delete the rest of the word.


ciw

(change inner word) will change the whole word under the cursor. Compare with

cw

which will only change the word from the current cursor position. For more info see this SO question/answer.


I often find myself wanting to replace one word with another that I have yanked from elsewhere. The problem with the other solutions is that if you attempt to change a word, then your next paste will be that word that you deleted with cw.

Try the following:

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

Hope that's what you were looking for.


ciw

c   change
iw  inner word

This will delete the word under the cursor (even if the cursor is somewhere in the middle of the word) and enter insert mode.


Also see Vim's documentation for reference:

:help c
:help text-objects

If you want to change a word with a previously yanked word, there's another solution to viwp (once you have yanked the first word).

ciw removes the previous word and puts you in insert mode where it was. But then you can use ctrl+r, 0 to insert the contents of register 0 (which contain the previously yanked word).

So:

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

This works better than viwp because after the first usage you can then repeatedly perform the replacement with .. It also doesn't switch into visual mode and highlight briefly.


Try cw - as in 'change word'.

Use http://linuxmoz.com/vi-commands-cheat-sheet/ or any other cheat sheet as a reference.