更改 xfce4-terminal 的键映射

更改 xfce4-terminal 的键映射

您好,我想稍微更改 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

好的,这就是我的.zshrcfor 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+delalt+但我还没有找到+和+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

我唯一缺少的是元删除......你能做什么。

相关内容