我现在从TextMate切换到VIM。我发现^+W在插入模式下非常有用。但是,我不仅要删除游标之前的单词,还要删除游标之后或周围的单词。
我做了一些谷歌搜索,但我唯一能找到的是^+W删除单词前光标。
我现在从TextMate切换到VIM。我发现^+W在插入模式下非常有用。但是,我不仅要删除游标之前的单词,还要删除游标之后或周围的单词。
我做了一些谷歌搜索,但我唯一能找到的是^+W删除单词前光标。
当前回答
正常模式:
daw : delete the word under the cursor
caw : delete the word under the cursor and put you in insert mode
其他回答
既然有这么多删除单词的方法,让我们来举例说明。
假设你编辑:
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
不太清楚“之前”和“之后”的用法,但你试过了吗
dw
?
编辑:我猜你在寻找在插入模式中使用的东西。奇怪的是,在文档中什么也找不到,似乎只有ctrl-w。
如果要删除游标之前的一定数量的字符,可以使用x。如果要删除游标之后的一定数量的单词,可以使用dw(以3个单词为例,可以使用3dw删除多个单词)。一般来说,如果要删除光标周围的内容,可以使用daw。
我不仅要删除光标之前的单词,而且要删除光标之后或周围的单词。
在这种情况下,可以将OP提出的解(即使用<c-w>)与接受的答案结合起来,得到:
inoremap <c-d> <c-o>daw<c-w>
或者(更短的解决方案):
inoremap <c-d> <c-o>vawobd
样例输入:
word1 word2 word3 word4
^------------- Cursor location
输出:
word1 word4
在旧的vi中,b将光标移动到单词的开头,在光标之前,w将光标移动到单词的开头,在光标之后,e将光标移动到单词的末尾,而dw将光标从光标删除到单词的末尾。
如果键入wbdw,则删除光标周围的单词,即使光标位于单词的开头或末尾。请注意,单词后面的空格被认为是要删除的单词的一部分。