是否可以在zsh中绑定Shift + Enter?

时间:2017-04-08 07:25:27

标签: zsh zshrc

我开始在macOS Sierra上使用zsh。我想有以下关键映射:

  • 输入=>接受行
  • Shift-Enter =>接受和保持

但是,我似乎无法区分这两者。我只能进入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?

2 个答案:

答案 0 :(得分:5)

zsh(以及其他shell)不对键绑定起作用,而是对从终端接收的键序列起作用。将按键和组合转换为按键序列是终端的责任。您可以通过按 Ctr + v 然后按下组合键来检索组合键的键序列,例如, + 输入

默认输入 Shift + 输入(以及 Ctrl + v Ctrl + Shift + m )都生成相同的密钥序列^M(至少在大多数常见的终端仿真器中) 。

幸运的是,一些终端仿真器允许配置发送的密钥序列。例如 iTerm2 允许您设置发送转义序列的自定义键绑定(在配置文件&gt;键中),您应该能够为 Shift <定义序列/ kbd> + 输入,例如[[SE然后可以在zshbindkey '^[[[SE' 'accept-and-hold'中进行适当的设置。 (不幸的是我目前无法访问Mac,因此我无法对此进行测试。)

答案 1 :(得分:0)

这可能会回答你的问题(不能发表评论,不要有50个代表)。您可以尝试# showkey --scancodes,它会为您提供密钥代码并查看手册页,例如man zshzle并搜索“代码”。我试图映射shift键但没有成功。可能是不可能的。另请查看bindkey -l,它会为您提供键盘图和bindkey -M emacs以及emacs键映射