在gnome-terminal和vim插入模式下获取<ctrl> + <backspace>删除单词


10

似乎ctrl+一次W向后删除了一个单词。太好了,但是我真的很希望它能像大多数其他应用一样与ctrl+ 一起使用backspace

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


1
在vim中,您可以按D,然后按B,它将执行相同的操作。但是,我也错过了终端中的此功能,因为您必须退出操作,并且在“插入”模式下运行时该功能不起作用。真棒小费CTRL + W.
mchid

Answers:


7

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


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

"\C-H":"\C-W"

现在,打开一个新终端,它应该可以正常工作。

说明

\C-H实际上是Control+ BackSpace。您可以按Ctrl+,V然后按所需的键来查看键码。您将看到BackSpace返回^H

现在,应该可以将Control+ 绑定BackSpace到bash函数,该函数通过使用删除前一个单词(backward-kill-wordunix-word-rubout"\C-H": backward-kill-word。但是,我无法正常工作。它可以与不同的键完美配合("\C-E": backward-kill-word例如,使Ctrl+ E删除前一个单词),但是由于某种原因,我无法使用它BackSpace

因此,作为解决方法,我们只将Ctrl+ 映射到+ Backspace,而Ctrl+ W已经映射到backward-kill-word。因此,当您按Ctrl+ Backspace时,它将被转换为Ctrl+ W,然后将发送backward-kill-word。我从SU的这个帖子中得到了解决此问题的想法。


4

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

此问题已在vte-0.42中修复,该文件是今年秋天发布的Gnome 3.18的一部分。

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


我可以在不增加庞大的PPA的情况下让它可靠运行吗?
CiprianTomoiagă17年

并非没有下载,修补,编译和安装与Trusty相匹配的libvte 2.90软件包。该修补程序位于bugzilla.gnome.org/show_bug.cgi?id=733246
egmont


1

它可以在我的机器上工作。只需确保您使用master的tmux和linuxbrew的nvim,并且control + backspace也可以在bash和vim中使用!

(也从linuxbrew获取bash)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.