在VIM中的光标后面或附近删除单词

我现在从TextMate切换到VIM。 我发现^ + W在插入模式下非常有用。 但是,我不想删除光标前面的单词,而是删除光标后面的单词。

我做了一些Googlesearch,但唯一能find的是^ + W删除光标前的单词…

你应该做的是创build一个特定的关键到一系列命令的imap,在这种情况下,这些命令将使您进入正常模式,删除当前的单词,然后把你插入:

:imap <Cd> <C-[>diwi 

正常模式:

 daw : delete the word under the cursor caw : delete the word under the cursor and put you in insert mode 

我认为这只是daw

 daw - delete a word 

以下适用于正常模式:我同意Dan Olson的回答,您应该在正常模式下进行大多数删除操作。 下面更多细节。

如果光标位于单词内部:
diw在word中删除(不包括空格)
daw删除单词(包括下一个单词之前的空格)。

如果光标位于单词的开头,只需按dw

这可以通过增加运动的常用数字来乘以,例如2w来前进2个单词,所以d2w删除两个单词。

插入模式^ w
在Vim中使用hjkl进行移动的想法是将手放在首页上更有效率。 在一个单词的结尾^ w很好地快速删除这个单词。 如果你已经进入了插入模式,input了一些文本,并使用箭头键结束在你违背了家庭行哲学的单词的中间。
如果您处于正常模式并想要更改单词,则只需使用c (更改)而不是d (删除)即可完全更改单词,并且无需按i即可重新进入插入模式回到打字。

你的意思是?

 dw 

它看起来并不像插入模式中有任何内置的方式,这是一个问题。 其他一些答案对于正常模式是正确的,并指出可以创build自定义映射来在插入模式下添加function。

老实说,你应该在正常模式下做大部分的删除操作。 ^ W很清楚,但我不确定我能想到的情况是,我宁愿这样做,而不是进入正常模式,并拥有更强大的删除命令在我的处置。

Vim和其他一些编辑器(包括TextMate)有很大不同。 如果您高效地使用它,您可能会发现在插入模式下不会花太多时间。

要删除两个空格之间的所有字符,在正常模式下:

 daW 

删除一个单词:

 daw 

要删除光标所在的整个单词,请使用diw
要删除光标所在的整个单词,并将您置入插入模式,请使用ciw
如果你不想删除整个单词,但删除你的dw/cw

为了删除光标前的一定数量的字符,可以使用X.若要删除光标后的一定数量的 ,可以使用dw(例如,可以使用3dw删除多个字,例如3个字)。 一般来说,在光标周围删除,你可以使用daw。

不完全确定你的“之前”和“之后”的用法,但你有没有尝试过

 dw 

编辑:我想你正在寻找的东西在插入模式下使用。 奇怪的是,没有什么可以在文档中find,ctrl-w似乎是所有的。

尝试重复删除单词时接受的答案失败,请尝试使用此解决scheme:

 " delete current word, insert and normal modes inoremap <C-BS> <CO>b<CO>dw noremap <C-BS> bdw 

它映射CTRL-BackSpace,也在正常模式下工作。

我做了两个映射,所以我可以在插入和插入模式下保持一致。

:map <'Key of your choice'> caw

:imap <'Key of your choice'> <'Esc'> caw

在旧的vi中, b将光标移动到光标之前的单词的开始处, w将光标移动到光标之后的单词的开始, e将光标移动到光标之后的单词的结尾处,并且dw从光标到结束的词。

如果键入wbdw ,即使光标位于词的开头或结尾,也会删除光标附近的词。 请注意,单词之后的空格可以被视为要被删除的单词的一部分。

插入模式不幸的是没有这样的命令。 在VIM中,要删除光标下的整个单词,可以在NORMAL模式下键入viwd 。 意思是“ V isual-block I nner W ord D elete”。 使用大写字母W来包含标点符号。