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

问题描述 投票:0回答:5

有谁知道如何在 Vim 插入模式下删除光标前面的单词?大多数系统使用

Ctrl+Del
来执行此操作。

我知道在Vim中在插入模式下删除光标后面的单词是

Ctrl+w
,但我不知道如何向前删除。

vim command editor keyboard-shortcuts
5个回答
5
投票

将此添加到您的

~/.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. 删除从当前位置到下一个单词结尾的字符(即从当前单词的第一个字符到最后一个字符)。然后再次进入插入模式。

行为

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

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


5
投票

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

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

Ctrl+o

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

dw

删除一个单词。


1
投票

您还可以将以下内容添加到您的

.vimrc

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

0
投票

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

在 nvim 中,这是有效的:

imap <C-Del> X<Esc>ce


0
投票

放置

imap <C-Del> <Esc>lce

in

.vimrc
Ctrl+Delete
一起工作,就像
Ctrl+Backspace

一起工作一样
imap <C-BS> <C-W>

在插入模式下

© www.soinside.com 2019 - 2024. All rights reserved.