17

我通常会在网上找到有趣的 zsh 键绑定设置(通过bindkey命令)。我的问题是如何解释这些转义序列映射到什么?例如,这里是oh-my-zshkey-bindings.zsh的片段

bindkey "^[[H" beginning-of-line
bindkey "^[[1~" beginning-of-line
bindkey "^[[F"  end-of-line
bindkey "^[[4~" end-of-line

是否有关于这些键映射如何表示的参考?此外,它是特定于 zsh 的还是特定于平台的?

我知道我可以使用其中一个catCtrl-V来查找某些键的相应转义序列。鉴于我可以蛮力找到反向匹配,但这不适用于我的键盘上不存在的键(例如 Mac 笔记本电脑上的 Home/End)。因此,我更喜欢不管物理键盘如何都可以确定键的方法。

4

2 回答 2

6

如果谈到典型的 unix/linux 事件流,图片大致如下。

终端仿真器程序接收到 X 事件,例如按下某某按钮,释放另一个按钮。例如,可以使用xev实用程序跟踪这些事件。然后终端仿真器将这些事件转换为转义序列

这个翻译不是一成不变的。它可以配置。不同的终端仿真器配置不同。例如,可以在.Xdefaults中设置xterm翻译,如下所示:

XTerm*VT100*Translations:#override \
Ctrl<Key>Left:          string(0x1B) string(OD) \n\
Ctrl<Key>Right:          string(0x1B) string(OC) \n\

注意 0x1B 是 ESC。ESC 也打印为^[

现在,zsh 使用 zle(和 bash 出于相同目的使用 readline 库)它解释一些序列以在输入行周围移动并执行编辑操作。

以下文本应提供更多附加细节。

Zsh Line 编辑器说明

维基百科关于转义序列的文章

Xterm 控制序列

于 2011-03-15T16:42:07.233 回答
-1

我的答案是针对 2021 年使用 MacOSX 和默认zsh Termnial的现代读者:

  1. 运行终端,按⌘</kbd> + , to open Preferences.
  2. 选择配置文件>键盘选项卡,然后在这里,您的所有映射都在这里。

终端的首选项,找到配置文件,键盘然后有映射

于 2021-01-02T18:14:35.163 回答