我希望 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>

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

最佳答案

gnome-terminal 的 libvte 需要打补丁。

libvte 已经有几个选项来映射退格,没有一个能区分 Ctrl-退格。它需要一个选项,可能是遵循 linux 控制台行为的选项(^? 表示退格,^H 表示 Ctrl-退格)。见 this gnome bug

2015 更新:这已在 23c7cd0f99d504cbab06d4c27254d4f3e2807ba8 中修复。

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

关于linux - 如何让 Ctrl-Backspace 在 gnome-terminal 中的 vim 中删除单词?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2715537/

10-16 11:13