我现在从TextMate切换到VIM
。我在INSERT模式下发现^+W
非常有用。但是,我不仅要删除光标前的单词,还要删除光标后面或周围的单词。
我做了一些谷歌搜索,但我唯一能找到的是^+W
删除光标前的字。
答案 0 :(得分:497)
普通模式:
daw : delete the word under the cursor
caw : delete the word under the cursor and put you in insert mode
答案 1 :(得分:94)
我认为这只是daw
daw - delete a word
答案 2 :(得分:73)
你应该做的是为一系列命令创建某个键的imap,在这种情况下,命令会使你进入正常模式,删除当前单词,然后让你回到插入:
:imap <C-d> <C-[>diwi
答案 3 :(得分:66)
以下适用于普通模式:我同意Dan Olson的回答,即对于大多数删除,您应该处于正常模式。更多细节如下。
如果光标位于单词内:
diw
删除单词(不包括空格)
daw
删除单词周围(包括下一个单词前的空格)。
如果光标位于单词的开头,请按dw
。
这可以乘以通常的移动数字,例如2w向前移动2个单词,所以d2w删除了两个单词。
插入模式^ w
在Vim中使用hjkl进行移动的想法是,将手放在主行上更有效率。在一个单词的末尾^ w非常适合快速删除单词。如果您已进入插入模式,则输入一些文本并使用箭头键结束在您反对主行哲学的单词的中间。
如果您处于正常模式并希望更改单词,则只需使用c
(更改)而不是d
(删除),如果您想完全更改单词,并且进入插入模式而无需按i
返回键入。
答案 4 :(得分:40)
你的意思是?
dw
答案 5 :(得分:20)
在插入模式下看起来没有任何内置方式,这就是问题所在。其他一些答案对于普通模式是正确的,并且指出可以创建自定义映射以在插入模式下添加功能。
老实说,您应该在正常模式下完成大部分删除操作。 ^ W很清楚,但是我不确定我是否可以想到我宁愿这样做而不是esc进入正常模式并拥有更强大的删除命令。
Vim以这种方式与许多其他编辑器(包括TextMate)截然不同。如果你有效地使用它,你可能会发现你不会在插入模式上花费太多时间。
答案 6 :(得分:19)
要在正常模式下删除两个空格之间的所有字符:
daW
只删除一个单词:
daw
答案 7 :(得分:12)
要删除光标所在的整个单词,请使用diw
要删除光标所在的整个单词并使您处于插入模式,请使用ciw
如果您不想删除整个单词,但要从dw/cw
答案 8 :(得分:5)
插入模式没有这样的命令。在VIM中,要删除光标下的整个单词,可以在NORMAL模式下键入viwd
。这意味着“ V isual-block 我 nner W ord D elete”。使用大写W
来包含标点符号。
答案 9 :(得分:2)
要删除光标前的一定数量的字符,可以使用X.在光标后删除一定数量的字,可以使用dw(可以使用3dw删除多个字)例如3个字)。一般来说,要删除光标周围,可以使用daw。
答案 10 :(得分:2)
不完全确定您对“之前”和“之后”的使用情况,但是您尝试了吗
dw
编辑:我猜你正在寻找在插入模式下使用的东西。奇怪的是,文档中没有任何内容,ctrl-w似乎就是全部。
答案 11 :(得分:2)
在旧的vi中,b
将光标移动到光标前的单词的开头,w
将光标移动到光标后的单词的开头,e
将光标移动到光标后面的单词结束,dw
从光标删除到单词的结尾。
如果键入wbdw
,即使光标位于单词的开头或末尾,也会删除光标周围的单词。请注意,单词后面的空格被认为是要删除的单词的一部分。
答案 12 :(得分:2)
尝试重复删除单词时,接受的答案失败,请尝试此解决方案:
" delete current word, insert and normal modes
inoremap <C-BS> <C-O>b<C-O>dw
noremap <C-BS> bdw
它映射了CTRL-BackSpace,也在正常模式下工作。
答案 13 :(得分:2)
我进行了两次映射,因此我可以在插入和插入模式中获得一致性。
:map <'Key of your choice'> caw
:imap <'Key of your choice'> <'Esc'> caw
答案 14 :(得分:2)
由于删除单词的方法有很多,因此我们来说明一下。
假设您进行编辑:
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
答案 15 :(得分:0)
我不仅要删除光标前的单词,还要删除光标后面或周围的单词。
在这种情况下,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