![更改 xfce4-terminal 的键映射](https://linux22.com/image/57963/%E6%9B%B4%E6%94%B9%20xfce4-terminal%20%E7%9A%84%E9%94%AE%E6%98%A0%E5%B0%84.png)
您好,我想稍微更改 xfce4-terminal 中的键映射,可能类似于将 Xterm.VT100.translations 添加到 .Xresources。
特别是,我想让 ctrl-backspace 删除最后一个单词,ctrl-delete 删除下一个单词。
奖励:我想让 alt 像 ctrl (重复功能)一样用于退格、删除、左箭头、右箭头。
如何在 xfce4-terminal 中执行所有或任何这些操作?
编辑:到目前为止的进展:我正在使用 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 程序本身吗?)不合作。一般来说,元键会被转换为转义字符,例如:
"\ey":shell-kill-word <-- Meta + y kills next word
但使用退格键和删除键我就不走运了。我测试了两个终端模拟器 xfce4-terminal 和 xterm 的键码,它们是由键盘上的退格键、删除键和控制键组合生成的。正如 emacs 的 Ch Cl 命令所报告的,它们如下:
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,因为它根本不发送键码。
我很沮丧,因为切换到 Linux 并处理所有硬件/软件兼容性问题的一个(重要)原因是 Linux 的可定制性如此之高。例如,我喜欢当我将鼠标悬停在窗口上时让窗口获得焦点,而不是单击它们。在我看来,解决现代 Linux 发行版中的此类问题是一项高度优先的任务。不幸的是,我没有时间对 X 和 xfce 进行所有背景研究,以采取下一步解决这个问题。对 Xorg 生态系统有更多了解的人可以为我指明正确的方向吗?也许有一个替代的终端模拟器可以做得更好?
最后一条信息:在 X 窗口中运行 emacs,它会获取除一个键码之外的所有键码:
backspace: <backspace>
delete: <delete>
\C-backspace: <C-backspace>
\C-delete: <C-delete>
\M-backspace: <M-backspace>
\M-delete: nothing
答案1
好的,这就是我的.zshrc
for ctrl+ ←, ctrl+→和alt+ ←, alt+的内容→
## use Ctrl <- and Ctrl -> for jumping to word-beginnings on the CL
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
## the same for alt-left-arrow and alt-right-arrow
bindkey '^[[1;3C' forward-word
bindkey '^[[1;3D' backward-word
在我的系统上,这些适用于crtl+del和alt+但我还没有找到+和+del的键。ctrlbackspacealtbackspace
bindkey '^[[3;5~' kill-word
bindkey '^[[3;3~' kill-word
Ctrl您可以通过按+ V,然后输入所需的组合键来输入代表每个组合键的奇数字符。例如,按Ctrl+V后按Ctrl+←会产生^[[1;5D
答案2
好吧,我不得不放弃 xfce4-terminal,因为键绑定是一场噩梦,然后回到 xterm。事实证明,我实际上更喜欢有多个窗口而不是选项卡。这是我为 xterm<-->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
我唯一缺少的是元删除......你能做什么。