获取 + 以删除gnome-terminal和vim插入模式中的单词

似乎 + W向后删除一个单词。 这很棒,但我真的和大多数其他应用程序一样使用 +

最好的方法是什么? 我需要更改以影响gnome-terminal命令,命令行vim和GUI vim。

请注意,这将在终端和默认的emacs模式下工作(如果Ctrl + W为您删除了上一个单词,则使用该模式)。 它不会在bash的vi模式下工作,也不会影响vi / vim本身。 因此,这只是部分答案,但这个emacs用户可以提供最好的答案。


这种事情由readline库管理,其行为可以通过~/.inputrc来控制。 编辑(或创建,如果它不存在) ~/.inputrc并添加以下行:

 "\CH":"\CW" 

现在,打开一个新的终端,它应该工作。

说明

\CH实际上是Control + BackSpace 。 您可以按Ctrl + V然后按下您所需的密钥来查看密钥代码。 您将看到BackSpace返回^H

现在, 应该可以将Control + BackSpace绑定到bash函数,该函数使用"\CH": backward-kill-word删除前一个单词( backward-kill-wordunix-word-rubout )。 但是,我无法让它发挥作用。 它适用于不同的键( "\CE": backward-kill-word例如,使用Ctrl + E删除前一个单词),但由于某些原因,我无法使用BackSpace

因此,作为一种解决方法,我们只需将Ctrl + Backspace映射到Ctrl + W ,它已映射到backward-kill-word 。 因此,当您按Ctrl + Backspace时,它将被转换为Ctrl + W ,而Ctrl + W反过来将发送backward-kill-word 。 我从这篇SUpost中得到了这个解决方法的想法。

直到最近,gnome-terminal在BackspaceCtrl + Backspace上发出相同的代码,因此您无法在应用程序中区分这两者。

这是在vte-0.42中修复的,这是今年秋天发布的Gnome 3.18的一部分。

如果你正在使用Wily,你可以在Gnome3 Staging中找到更新的软件包。