如何在插入模式下在 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