您好我想在xfce4-terminal中稍微更改键映射 - 或者在xfce4 X环境下运行的任何终端。
特别是,我想让ctrl-backspace和meta-backspace删除最后一个单词,ctrl-delete和meta-delete删除下一个单词。
到目前为止的进展:我正在使用bash,而bash使用readline库和bash内置函数“bind”来将键序列映射到readline函数。我需要的功能是“shell-kill-word”和“shell-backward-kill-word”。原则上,我应该能够做到这样的事情:
"\C-Rubout":shell-backward-kill-word
"\C-Delete":shell-kill-word
"\M-Rubout":shell-backward-kill-word
"\M-Delete":shell-kill-word
然而,xfce4终端仿真器,或者进程中更高上游的某个组件(可能是窗口管理器,xfwm4,Xorg程序本身?)不合作。通常,元键被转换为Escape字符,例如,这可以:
"\ey":shell-kill-word <-- Meta + y kills next word
但是使用退格键和删除键我运气不好。我测试了两个终端仿真器的密钥代码,xfce4-terminal和xterm,由我的键盘上的退格和删除以及控制键组合生成。正如emacs的C-h C-l命令所报告的那样:
xterm:
backspace: DEL
delete: \e[3~
\C-backspace: \C-h
\C-delete: \e[3;5~
\M-backspace: y-umlaut (y with two dots over it)
\M-delete: nothing
xfce4-terminal:
backspace: DEL
delete: \e[3~
\C-backspace: DEL
\C-delete: \e[3;5~
\M-backspace: \e DEL
\M-delete: nothing
特别是在xfce4-terminal中,不可能将\ C-backspace绑定到shell-backword-kill-word,因为它会发送与常规退格键完全相同的键码。并且将M-delete绑定到shell-kill-word是不可能的,因为它根本不会发送密钥代码。
不幸的是,我不是X窗口系统的专家。有更多Xorg生态系统知识的人能指出我正确的方向吗?也许还有另一种终端模拟器可以做得更好吗?我正在运行当前的Debian发行版,其中包含xfce4窗口管理器和Xorg。
我发现使用最新的Linux软件和典型的现代计算机设置无法实现此行为几乎是不可思议的。真的是这样吗?
最后一条信息:在X窗口中运行emacs,它只能正确获取其中一个密钥代码:
backspace: <backspace>
delete: <delete>
\C-backspace: <C-backspace>
\C-delete: <C-delete>
\M-backspace: <M-backspace>
\M-delete: nothing
答案 0 :(得分:1)
好吧,我不得不放弃xfce4-terminal,因为键绑定是一场噩梦,然后回到xterm。事实证明,我实际上更喜欢有几个窗口到标签。这是我为xterm&lt; - &gt; bash
的键绑定所做的# ctrl-backspace
"\C-h":shell-backward-kill-word
# meta-backspace
"ÿ":shell-backward-kill-word
# ctrl-delete
"\e[3;5~":shell-kill-word
# meta-delete
# not detected
# ctrl-right-arrow
"\e[1;5C":shell-forward-word
# ctrl-left-arrow
"\e[1;5D":shell-backward-word
# meta-right-arrow
"\e[1;3C":forward-word
# meta-left-arrow
"\e[1;3D":shell-backward-word
我唯一缺少的是元删除...你能做什么。