ChatGPT解决这个技术问题 Extra ChatGPT

如何替换光标下的单个单词?

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

所以不是使用dw然后i然后是单词然后是Esc,有没有更简单的组合来替换光标下的单词?


C
Community
ciw

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

cw

这只会改变当前光标位置的单词。有关详细信息,请参阅 this SO 问题/答案。


如果单词包含点或斜线(例如/usr/bin/bash1222.333),如何处理?看起来 vim 将 /. 解释为单词的结尾,并且不会选择整个字符串。
@AlexanderCska 您可能想尝试 cWciW (注意大写 W)
谢谢,工作完美:)
J
Jacob Budin

我经常发现自己想用我从别处抽出的另一个词来替换一个词。其他解决方案的问题在于,如果您尝试更改某个单词,那么您的下一个粘贴将成为您使用 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". 

希望这就是你要找的。


它工作得很好,但前提是必须进行更换once。如果我必须替换几个 second' by first`(在您的示例中),则在第一次替换后复制的单词变为 second
@ViFI,如果要粘贴多次,viw"0p 而不是 viwp 会为您提供帮助。基本上,与 viwp 相同,但在粘贴前使用 "0,不会覆盖缓冲区
X
Xophmeister

西瓦

c   change
iw  inner word

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

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

:help c
:help text-objects

C
Connor

如果您想用之前抽出的词来更改一个词,viwp 有另一种解决方案(一旦你抽出第一个词)。

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

所以:

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

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


不知道你的意思是它不会改变模式,相反的情况似乎是这样,但也许这就是你想要的,保持插入模式。但一个很大的优势是(与viwp相反)只需一次拉动即可多次完成。谢谢!
哦,你是对的,我正在考虑进入可视模式,已编辑。我没有意识到这是 viwp 的限制 - 甚至 . 也不会复制它。
当我们已经抽出替换词时,这是迄今为止最好的解决方案。
这就是答案!使用 . 的能力很棒!
K
Kosma Dunikowski

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

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


这行得通,但它只会修改光标右侧的字符
A
ABN

复制光标下的单词:bvey

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