eje*_*jel 11 zsh keymapping key-bindings zsh-zle
我经常在网络上找到有趣的zsh键绑定设置(通过bindkey命令).我的问题是如何解释这些转义序列映射到的内容?例如,这是一个来自oh-my-zsh的key-bindings.zsh的片段
bindkey "^[[H" beginning-of-line
bindkey "^[[1~" beginning-of-line
bindkey "^[[F" end-of-line
bindkey "^[[4~" end-of-line
Run Code Online (Sandbox Code Playgroud)
是否有关于这些键映射如何表示的参考?此外,它是特定于zsh还是特定于平台?
我知道我可以使用其中一个cat或Ctrl-V来查找某些键的相应转义序列.鉴于我可以通过暴力来找到反向匹配,但这不适用于键盘上不存在的键(例如Mac笔记本电脑上的Home/End).因此,我更喜欢无论物理键盘如何都可以确定键的方法.
如果谈到典型的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\
Run Code Online (Sandbox Code Playgroud)
注意0x1B是ESC.ESC也打印为^ [.
现在,zsh使用zle(并且bash使用readline库用于相同的目的),它解释了一些序列在输入行中移动并执行编辑操作.
以下文本应提供更多其他详细信息.
和
| 归档时间: |
|
| 查看次数: |
6128 次 |
| 最近记录: |