我开始在macOS Sierra上使用zsh。我想有以下关键映射:
但是,我似乎无法区分这两者。我只能进入Enter和Esc-Enter,但不能进入Shift-Enter:
bindkey "^M" accept-line # Enter
bindkey "^[^M" accept-and-hold # Esc-Enter
bindkey "????" accept-and-hold # Shift-Enter
是否可以检测并处理Shift-Enter?
答案 0 :(得分:5)
zsh
(以及其他shell)不对键绑定起作用,而是对从终端接收的键序列起作用。将按键和组合转换为按键序列是终端的责任。您可以通过按 Ctr + v 然后按下组合键来检索组合键的键序列,例如, 移 + 输入
默认输入和 Shift + 输入(以及 Ctrl + v 和 Ctrl + Shift + m )都生成相同的密钥序列^M
(至少在大多数常见的终端仿真器中) 。
幸运的是,一些终端仿真器允许配置发送的密钥序列。例如 iTerm2 允许您设置发送转义序列的自定义键绑定(在配置文件&gt;键中),您应该能够为 Shift <定义序列/ kbd> + 输入,例如[[SE
然后可以在zsh
:bindkey '^[[[SE' 'accept-and-hold'
中进行适当的设置。 (不幸的是我目前无法访问Mac,因此我无法对此进行测试。)
答案 1 :(得分:0)
这可能会回答你的问题(不能发表评论,不要有50个代表)。您可以尝试# showkey --scancodes
,它会为您提供密钥代码并查看手册页,例如man zshzle
并搜索“代码”。我试图映射shift键但没有成功。可能是不可能的。另请查看bindkey -l
,它会为您提供键盘图和bindkey -M emacs
以及emacs键映射