我通常会发现有趣的ZSH键键设置(通过 bindkey 命令)在网络周围。我的问题是我如何解释这些逃脱的序列映射到什么?例如,这是来自 哦,我 - Zsh' 钥匙结合

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

是否有关于这些keymaps如何表示的参考?另外,它是特定于ZSH特定的还是平台的?

我知道我可以使用 cat 或者 ctrl-v 找到某些键的相应逃逸序列。鉴于我可以强力找到反向匹配,但这对于我键盘上不存在的键(例如Home/End在Mac笔记本电脑上)不起作用。因此,我更喜欢可以确定键的方法,无论物理键盘如何。

有帮助吗?

解决方案

如果说事件的典型UNIX/Linux流,则图片大致如下。

终端模拟器程序收集X事件,例如So So,So按下按钮,将发布另一个按钮。这些事件可以跟踪 xev 例如,实用程序。然后,终端模拟器将这些事件转换为 逃脱序列.

这种翻译不是石头设定的。它可以配置。不同的终端模拟器的配置不同。例如 x -term 可以在 .xdefaults 像那样:

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库以相同的目的使用Readline库),该序列解释了一些序列以围绕输入线移动并执行编辑操作。

以下文本应提供更多其他详细信息。

ZSH线编辑器描述

Wikipedia关于逃生序列的文章

X -Term控制序列

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top