177

如何在 Vim 中替换光标下的单词。

因此,不是使用dwthen ithen 单词 then Esc,而是有一个更简单的组合来替换光标下的单词?

4

6 回答 6

301
ciw

(更改内词)将更改光标下的整个单词。与之比较

cw

这只会从当前光标位置更改单词。有关更多信息,请参阅此 SO问题/答案。

于 2013-01-09T10:48:40.730 回答
97

我经常发现自己想用我从别处抽出的另一个词来替换一个词。其他解决方案的问题是,如果您尝试更改一个单词,那么您的下一个粘贴将您删除的那个单词cw

尝试以下操作:

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

希望这就是你要找的。

于 2013-11-08T14:26:28.213 回答
33

ciw

c   change
iw  inner word

这将删除光标下的单词(即使光标位于单词中间的某个位置)并进入插入模式。


另请参阅 Vim 的文档以供参考:

:help c
:help text-objects
于 2013-01-09T10:48:46.200 回答
17

如果你想用之前拉过的词来改变一个词,还有另一种解决方案viwp(一旦你拉了第一个词)。

ciw删除前一个单词并将您置于插入模式。但随后您可以使用ctrl+r, 0插入寄存器 0 的内容(其中包含先前抽出的单词)。

所以:

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

这比viwp因为在第一次使用后您可以重复使用.. 它也不会切换到可视模式并短暂突出显示。

于 2018-06-26T17:34:43.980 回答
1

尝试cw- 如“更改单词”。

使用http://linuxmoz.com/vi-commands-cheat-sheet/或任何其他备忘单作为参考。

于 2013-01-09T10:51:45.123 回答
0

要复制光标下的单词,请按:bvey

要替换光标下的单词,请按:bvep

于 2021-04-01T19:05:56.223 回答