zsh按键绑定: 无法绑定到空的按键序列。

10
最近对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]} 是 nil,条件应该是什么样子的。有什么想法吗?


错误有点奇怪,因为无论您的键盘是否具有这些键,终端仍应具有可识别为向上翻页或向下翻页的键序列。(例如,在Macbook Pro上,fn-up-arrow发送与具有此类键的键盘上的Page Up相同的键代码。) - chepner
没错。已编辑帖子。 - Alexei Danchenkov
print ${(k)terminfo} 会输出任何内容吗?我认为您需要运行 zmodload zsh/terminfo 来使 terminfo 数组可用,尽管根据我的 zsh 设置似乎并不需要这样做。 - chepner
当然是这样的。但是 kpp 不是数组的一部分。 - Alexei Danchenkov
1个回答

6

这与$terminfo在不同平台上不一致有关,该提交已被撤销,请查看https://github.com/robbyrussell/oh-my-zsh/issues/2608获取详细信息。如果您安装了hub工具,可以快速修复:

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

并重新加载您的shell。如果没有hub,您需要先为PR设置远程并从那里拉取。


terminfo键验证对我来说比完全回退好一点。我添加了另一个拉取请求2634。 - Alexei Danchenkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接