在正常模式下,我可以打Ctrl
+ E
其删除当前字的其余部分,进入插入模式。如何在Vim中删除单词并进入插入模式?
我想要删除整个单词,无论光标位置如何(当然在单词内)。另外 - 如何用默认寄存器中的内容替换当前单词?
在正常模式下,我可以打Ctrl
+ E
其删除当前字的其余部分,进入插入模式。如何在Vim中删除单词并进入插入模式?
我想要删除整个单词,无论光标位置如何(当然在单词内)。另外 - 如何用默认寄存器中的内容替换当前单词?
您可以通过输入“ciw”删除光标所在的单词来使用“更改内部单词”。
在Vim中,“内部”和“a”命令很棒,也可以在{}块内尝试“ci {”,或者如果您也希望删除这些{}字符,可以尝试“ca {”。要将这些命令翻译成英文以更好地记住它们,请尝试:“更改内部{块”和“更改块”。在http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects
文档,或者,你也许可以使用键序列bdwi
删除当前单词并进入插入模式。
您可以使用'bcw'去当前单词的开头,然后改变单词,这会让您插入模式。 – 2009-09-04 13:24:26
如果您的光标已经在单词的第一个字符上,那么最终将删除前一个单词。 – 2009-09-10 14:16:01
@WarrenPena在这种情况下,只需使用'dwi'。请注意,警察不会注意到,因为DWI在大多数州都是非法的。 – 2014-08-21 18:19:34
回答您的后续问题:viwp
v -> start visual mode
iw -> select the 'inner word'
p -> paste - in visual mode it replaces the visually selected text.
如何连续多次执行此操作?每次粘贴时,缓冲区都会填充粘贴的单词。 – 2012-04-05 21:08:44
@BenGartner在[Vim Tips wiki]找到了这个(http://vim.wikia.com/wiki/Replace_a_word_with_yanked_text#Alternate_method):使用'yiw'复制当前单词,将光标置于要替换的单词上,使用' ciw
@BenGartner如果你所要做的只是用WORD_B替换WORD_A的所有实例,那么你只需使用vim的ex模式':%s/a/b/g'。 'a'可以是精确的文本,也可以是正则表达式,'b'就是你将会替换'a'的所有匹配项。你可以用vim的'/'模式测试正则表达式。如果您不想在所有行上进行替换,请将'%'替换为行号或范围。 – 2014-08-21 18:11:02
对于第一个问题,bcw
也行。这意味着“b
ack到词的开头,c
hange w
ord”。但我认为ciw
更令人难忘,意思是“c
hange i
nnd w
ord”,只有一步。
对于“替换使用粘贴”的第二个问题,我的解决方案是"_diwP
。它d
elete i
nner w
ord寄存器你不关心和p
aste默认注册的内容。一个好处是你可以多次粘贴默认寄存器,因为它不会被污染。这是一个小复杂的,所以我把它映射为nnoremap ,r "_diwP
。
“caw”可以用来代替“ciw”相同的功能。 – Amjith 2009-09-04 21:52:42
'caw'和'ciw'将替换整个单词,只是'cw'将从当前光标位置改变为当前单词的结尾。 – 2009-09-05 17:00:47
我编辑答案从讲述“co {”到“ca {”,由jinxed_coders评论提醒。我的旧定制将“(a)<>”命令实现为“(o)uter <>”命令。 – Kaali 2009-09-07 04:34:00