繁体   English   中英

如何在插入模式下在 Vim 中执行 Ctrl+Del?

[英]How to perform Ctrl+Del in Vim while in insert mode?

有谁知道如何在 Vim 的插入模式下删除光标前的单词? 大多数系统使用Ctrl+Del来执行此操作。

我知道在插入模式下删除 Vim 中光标后面的单词是Ctrl+w ,但我不知道如何向前删除。

将此添加到您的~/.vimrc (对于 VIM 或 GVIM):

imap <C-D> X<Esc>lbce
;   1      2  3  4 5   ; just a comment for the further description

(在 GVIM 中, <C-Del>也有效。)

描述

  1. 在插入模式下在Ctrl+D上设置以下绑定。
  2. 添加一个虚拟字母来处理最初只包含一个字符的单词。
  3. 离开插入模式。 (光标现在位于添加的字母上。)
  4. 移动到当前单词的开头。
  5. 删除从当前位置到下一个词尾的字符(即从当前词的第一个字符到它的最后一个字符)。 然后再次进入插入模式。

行为

  • 如果光标位于单词的字符上或单词的最后一个字符之后(但不在当前行的末尾),则该单词将被删除。
  • 否则,如果左边有一个单词(在同一行),那么它将被删除(没有任何空白字符)。
  • 否则(当没有下一个词时)行为是未定义的。 (也可以随意更新答案以涵盖这些情况。)

如果删除了一个单词,则光标将位于与该单词的第一个字符相同的位置。

在插入模式下使用单个普通模式命令。

为此,在插入模式下,键入

Ctrl+o

这告诉 vim 只接受 1 个命令,就好像它是正常模式一样。 然后按

dw

删除一个词。

接受的解决方案并不完全正确,对吗? 它确实向后删除但不向前删除

在 nvim 中这是有效的: imap <C-Del> X<Esc>ce

您也可以将下面添加到您的.vimrc

inoremap <C-Del> <C-o>dw

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM