我现在从TextMate切换到VIM。我发现^+W在插入模式下非常有用。但是,我不仅要删除游标之前的单词,还要删除游标之后或周围的单词。
我做了一些谷歌搜索,但我唯一能找到的是^+W删除单词前光标。
我现在从TextMate切换到VIM。我发现^+W在插入模式下非常有用。但是,我不仅要删除游标之前的单词,还要删除游标之后或周围的单词。
我做了一些谷歌搜索,但我唯一能找到的是^+W删除单词前光标。
当前回答
如果要删除游标之前的一定数量的字符,可以使用x。如果要删除游标之后的一定数量的单词,可以使用dw(以3个单词为例,可以使用3dw删除多个单词)。一般来说,如果要删除光标周围的内容,可以使用daw。
其他回答
既然有这么多删除单词的方法,让我们来举例说明。
假设你编辑:
foo-bar quux
当光标在'bar'中的'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
在插入模式下似乎没有内置的方法,这就是问题所在。其他一些答案对于普通模式是正确的,并指出可以创建自定义映射以在插入模式中添加功能。
老实说,你应该在正常模式下进行大部分删除操作。^W是整洁的,但我不确定我能想到一种情况,我宁愿这样做,而不是esc进入正常模式,并有更强大的删除命令在我的处置。
在这方面,Vim与许多其他编辑器(包括TextMate)非常不同。如果您正在高效地使用它,您可能会发现在插入模式上花费的时间并不多。
不幸的是,插入模式没有这样的命令。在VIM中,要删除光标下的整个单词,可以在NORMAL模式下键入viwd。这意味着“视觉块内部字删除”。使用大写的W来包含标点符号。
我想这只是乌鸦
daw - delete a word
我做了两个映射,以便在插入模式和退出插入模式时保持一致性。
:map <'Key of your choice'> caw
:imap <'Key of your choice'> <'Esc'> caw