12

我希望 Ctrl-Backspace 在 vi​​m 插入模式下删除当前单词。在 xterm 中,我可以通过

:inoremap <C-H> <C-W>

但在 gnome-terminal 中,我无法找到实现它的方法。

在 vim 插入模式下,如果我输入 control-v 然后按退格键,我会在 xterm 中得到 ^H,而 ^? 在 gnome 终端中。很遗憾,

:inoremap <C-?> <C-W>

在 gnome-terminal 中不起作用;无论如何,control-backspace 只会删除一个字符。

关于ASCII码:

Gnome-terminal 允许您在 Edit -> Profile Preferences -> Compatibility 下更改退格字符。不幸的是,据我所知,没有任何选项有效:无论我通过设置应用于 Backspace 的任何字符,如果我尝试映射字符本身,例如

:inoremap <C-H> <C-W>

然后常规退格和控制退格都会删除整个单词;如果我尝试映射控制加上那个字符,比如

:inoremap <C-^H> <C-W>

然后常规退格和控制退格只删除一个字符。

4

1 回答 1

12

gnome-terminal 的 libvte 需要打补丁。

libvte 已经有几个映射退格的选项,它们都不能区分 Ctrl-退格。它需要一个选项,可能是一个遵循 linux 控制台行为的选项(^? 代表退格,^H 代表 Ctrl-退格)。看到这个 gnome 错误


2015 年更新:此问题已在23c7cd0f99d504cbab06d4c27254d4f3e2807ba8中修复。

libvte 0.41.90、0.40.3 和更新版本有修复。

于 2010-06-26T18:34:41.940 回答