我现在正VIM
从TextMate 切换到.我发现^+W
在INSERT模式下非常有用.但是,我不仅要删除光标前的单词,还要删除光标后面或周围的单词.
我做了一些谷歌搜索,但我唯一能找到的是^+W
删除光标之前的字.
正常模式:
daw : delete the word under the cursor caw : delete the word under the cursor and put you in insert mode
I think it's just daw
daw - delete a word
你应该做的是为一系列命令创建某个键的imap,在这种情况下,命令会使你进入正常模式,删除当前单词,然后让你回到插入:
:imapdiwi
以下适用于普通模式:我同意Dan Olson的回答,即对于大多数删除,您应该处于正常模式.更多细节如下.
如果光标在单词内:
diw
删除单词(不包括空格)
daw
以删除单词周围(包括下一个单词前的空格).
如果光标位于单词的开头,只需按dw
.
这可以乘以通常的移动数字,例如2w来向前移动2个单词,所以d2w删除两个单词.
插入模式^ w
在Vim中使用hjkl进行移动的想法是,将手放在主行上会更有效率.在一个单词的末尾^ w非常适合快速删除单词.如果你已进入插入模式,输入一些文本并使用箭头键结束在你反对主行哲学的单词的中间.
如果您处于正常模式并且想要更改单词,则可以简单地使用c
(更改)而不是d
(删除),如果您想要完全更改单词,并重新进入插入模式而无需i
返回打字.
你的意思是?
dw
在插入模式下看起来没有任何内置方式,这就是问题所在.其他一些答案对于普通模式是正确的,并且指出可以创建自定义映射以在插入模式下添加功能.
老实说,你应该在普通模式下完成大部分删除操作.^ W很清楚,但是我不确定我是否可以想到我宁愿这样做而不是esc进入正常模式并拥有更强大的删除命令.
Vim以这种方式与许多其他编辑器(包括TextMate)截然不同.如果您有效地使用它,您可能会发现您不会在插入模式下花费太多时间.
要删除两个空格之间的所有字符,请在正常模式下:
daW
要删除一个单词:
daw
删除光标所用diw
的整个单词要删除光标所在的整个单词,ciw
如果你不想删除整个单词但要删除你所在的位置,请使用插入模式.dw/cw
不幸的是,插入模式没有这样的命令。在VIM中,要删除光标下的整个单词,可以viwd
在NORMAL模式下键入。这意味着“ V isual块我 nner W¯¯ ORD d elete”。使用大写字母W
来包含标点符号。
由于删除单词的方法有很多,因此我们来举例说明。
假设您编辑:
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