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

You*_*uly 5 vim command keyboard-shortcuts editor

有谁知道如何在 Vim 插入模式下删除光标前面的单词?大多数系统都是Ctrl+Del这样做的。

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

Kir*_*gin 5

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

imap <C-D> X<Esc>lbce
;   1      2  3  4 5   ; just a comment for the further description
Run Code Online (Sandbox Code Playgroud)

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

描述

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

行为

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

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


Stu*_*ick 5

在插入模式下使用单个正常模式命令。

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

Ctrl+o
Run Code Online (Sandbox Code Playgroud)

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

dw
Run Code Online (Sandbox Code Playgroud)

删除一个单词。