zsh bindkey ctrl-enter 到 autosuggest-accept 使用 kitty

zsh bindkey ctrl-enter 到 autosuggest-accept 使用 kitty

我想设置ctrl-enter接受 zsh 自动建议。我一直在尝试,bindkey "\C-\r" autosuggest-accept但这最终被理解为只需按 Enter 键(因此覆盖accept-line使其很难做任何事情:))。我正在使用kittyand withkitty可以通过ble.shbash 中的自动建议来做到这一点,所以我希望它也可以在 zsh 中实现。

答案1

\C-\r传统上,这不是终端土地上的事物,因为它不是有效的ASCII 控制字符。因此,在大多数终端中,除非另有配置,否则按下CtrlEnter输出相同Enter(甚至什么都不输出)。

ble.sh然而,却把凯蒂置于一个特殊的 XTerm 模式可以实现传统上不会产生(不同)输出的修饰键组合。我不知道是否存在ble.shZsh 的等效项,但编写一个是可行的。简而言之,这样的脚本(或插件,如果你愿意的话)需要执行以下操作:

  1. 为在此特殊模式下产生不同输出的所有现有键绑定添加新的键绑定。
  2. 每当Zsh 行编辑器 (ZLE)初始化,启用此模式:
    autoload -Uz add-zle-hook-widget
    modify-other-keys-extended() {
      print -n '\e[>4;2m'
    }
    add-zle-hook-widget line-init \
        modify-other-keys-extended
    
  3. 每当 ZLE 完成时,禁用此模式:
    modify-other-keys-off() {
      print -n '\e[>4;0m'
    }
    add-zle-hook-widget line-finish \
        modify-other-keys-off
    

相关内容