答案1
你是对的,这是按Ctrl+ Meta+造成的Up/Down。终端发送转义序列来表示功能键和修饰符组合;看键盘输入和文本输出如何工作?以获得概述和有没有可以处理所有组合键的 Linux 终端?了解与此特定案例相关的更多详细信息。
Zsh 无法知道该键的某些按下是否合法。该错误要么存在于您的窗口管理器(或处理Ctrl+ Meta+键绑定的桌面环境部分Up/Down)中,要么存在于您的终端模拟器中。可能不在终端模拟器中,因为它根本不应该看到这些击键:它们应该由将它们设置为键盘快捷键的程序捕获。
您能做的最好的事情就是 zsh 设置一个解决方法:为这些键序列添加一个不执行任何操作的键绑定。这仅对 zsh 有效,对终端中运行的其他应用程序无效。完整的字符序列为␛[1;7A
for Ctrl+ Meta+Up和␛[1;7B
for Ctrl+ Meta+ Down,其中 ␛ 是转义字符(字节值 27)。您可以通过按Ctrl+V然后在 zsh 中击键(转义字符显示^[
在终端上)来看到这一点。默认情况下,zsh 读取␛[1
,发现此转义序列未绑定并停止在此处读取,然后将以下字符视为普通插入(除了根据具体情况外,无法知道键序列何时结束)。
bindkey -s '\e[1;7A' ''
bindkey -s '\e[1;7B' ''