【问题标题】:zsh key binding: cannot bind to an empty key sequencezsh 键绑定:无法绑定到空键序列
【发布时间】:2014-04-20 02:04:48
【问题描述】:

zsh 的最新更新在 Mac OS X Maverick 上产生了以下错误: /Users/[username]/.oh-my-zsh/lib/key-bindings.zsh:bindkey:23: cannot bind to an empty key sequence

对应的行是:

bindkey "${terminfo[kpp]}" up-line-or-history       # [PageUp] - Up a line of history
bindkey "${terminfo[knp]}" down-line-or-history     # [PageDown] - Down a line of history

Mac 键盘上没有 PageUp、PageDown、Home 和 End。 我想知道为什么正确的键码被 bindkey 视为 nil 或者如果 ${terminfo[kpp ]} 为零。有什么想法吗?

【问题讨论】:

  • 这个错误有点奇怪,因为不管你的键盘有没有按键,终端应该仍然有一个按键序列,它会识别为向上翻页或向下翻页。 (例如,在 Macbook Pro 上,fn-up-arrow 发送的键代码与具有此类键的键盘上的 Page Up 相同。)
  • 没错。编辑了帖子。
  • print ${(k)terminfo} 是否产生任何输出?我认为您需要运行zmodload zsh/terminfo 才能使terminfo 数组可用,尽管根据我的zsh 设置似乎没有必要。
  • 确实如此。但是kpp 不是数组的一部分。

标签: shell zsh oh-my-zsh


【解决方案1】:

这与 $terminfo 跨平台不一致有关,提交已被还原,请参阅https://github.com/robbyrussell/oh-my-zsh/issues/2608 了解详细信息。如果您安装了集线器工具,则快速修复是:

cd ~/.oh-my-zsh 
hub checkout https://github.com/robbyrussell/oh-my-zsh/pull/2625 terminfo_fix

然后重新加载你的 shell。如果没有集线器,您需要先为 PR 设置遥控器并从那里拉出。

【讨论】:

  • terminfo 密钥验证对我来说似乎比完全还原要好一些。我添加了另一个拉取请求 2634。
猜你喜欢
  • 2018-07-18
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多