Answers:
您应该做的是为一系列命令创建一个具有特定键的imap,在这种情况下,这些命令将使您进入正常模式,删除当前单词,然后将您重新插入:
:imap <C-d> <C-[>diwi
imap <C-d> <C-o>diw
也可以。它也不会创建撤消点,<Esc>通常会这样做。
正常模式:
daw : delete the word under the cursor
caw : delete the word under the cursor and put you in insert mode
da)
,ci)
但从未想到!
.vimrc
文件,像这样: nmap <Leader>d daw
和nmap <Leader>c caw
aw
是对象选择的一个例子。您可以在可视模式下尝试对象选择,以查看其效果:vimdoc.sourceforge.net/htmldoc/motion.html#object-select
我认为只是 daw
daw - delete a word
a
是一个命令,Append text after the cursor [count] times.
但是如何daw
工作?
d
指示您将要“删除”。“ a”是一种参数,指定删除要包含定界符。最后,“ w”(parameter
如果愿意的话,另一个)指定word
将删除一个单位。
dw
和之间有什么区别daw
?
dw
则会从光标删除到单词的结尾,而daw
会删除整个单词以及空格。diw
将删除整个单词而不会触碰周围的空格。
以下内容适用于普通模式:我同意Dan Olson的回答,对于大多数删除操作,您可能应该处于普通模式。下面有更多详细信息。
如果光标位于单词:内
diw
,则删除该单词(不包含空格),
daw
以删除单词周围(在下一个单词之前包含空格)。
如果光标位于单词的开头,请按dw
。
这可以乘以移动的常用数字来乘以,例如2w向前移动2个单词,因此d2w删除了两个单词。
插入模式^ w
在vim中使用hjkl进行移动的想法是,将手放在主行上会更有效率。单词^ w可以很好地快速删除单词。如果您已进入插入模式,请输入一些文本,然后使用箭头键结束出现在单词中间的单词,这与本行哲学背道而驰。
如果你在正常模式和想改变的话,你可以简单地使用c
(变更),而不是d
(删除),如果你想彻底改变这个词,并插入模式重新进入,不必按i
找回打字。
你是说喜欢吗?
dw
dw
不会删除连字符或其他标点符号。
看起来没有任何内置方法可以在插入模式下执行此操作,这就是问题所在。其他一些答案对于正常模式是正确的,并且指出可以创建自定义映射以在插入模式下添加功能。
老实说,您可能应该在普通模式下执行大部分删除操作。^ W很清楚,但是我不确定我能想到的是我宁愿这样做而不是进入正常模式并拥有更强大的删除命令的情况。
Vim通过这种方式与许多其他编辑器(包括TextMate)有很大的不同。如果您有效率地使用它,则可能会发现在插入模式下您不会花费太多时间。
由于删除单词的方法有很多,因此我们来举例说明。
假设您编辑:
foo-bar quux
并在光标位于“栏”中的“ a”上时调用命令:
foo-bquux # dw: letters then spaces right of cursor
foo-quux # daw: letters on both sides of cursor then spaces on the right
foo- quux # diw: letters on both sides of cursor
foo-bquux # dW: non-whitespace then spaces right of cursor
quux # daW: non-whitespace on both sides of cursor then spaces on the right
quux # diW: non-whitespace on both sides of cursor
尝试重复删除单词时,接受的答案失败,请尝试以下解决方案:
" delete current word, insert and normal modes
inoremap <C-BS> <C-O>b<C-O>dw
noremap <C-BS> bdw
它映射CTRL-BackSpace,也可以在正常模式下工作。