zsh 中的某些字符直到释放键时才会显示

zsh 中的某些字符直到释放键时才会显示

在 zsh shell 中输入特定字符时(在我的情况下是 e 和 ;),按下按键后它们不会立即显示。相反,它们只会在释放按键后一小段时间显示。按住这些键时,它们不会在按住按键时显示,但同样只会在释放按键后一小段时间显示。按下按键后,所有其他键都会立即显示,并且在按住按键时也会持续显示。如果我在终端仿真器中运行 bash,问题就消失了。我找不到任何相关信息,我想我可能遗漏了一些显而易见的东西。任何帮助都非常感谢。

答案1

如果你定义了一个由多个字符组成的键绑定,例如

bindkey 'foo' some_zle_widget

必须等到您明确表示不想键入此键绑定时才可以。在上面的示例中,按键f将延迟一段时间。如果您按下 ,延迟将继续o,但如果您按下除 之外的键,延迟将被中止o

因此,为了缩小这个问题的范围,首先要干净的shell,即无需通过发出 来加载通常的配置文件zsh -f。问题现在应该消失了(正如您在评论中确认的那样)。

接下来,请特别检查您的~/.zshrc文件,以及系统中的一些配置/etc,以查看是否存在问题绑定密钥 陣容 註釋 .

最后,当你在注释中写下你想绑定到 时CTRL + ←,构造正确的行。为此,你需要终端在按下此组合键时发送的代码。你可以使用例如CTRL + vCTRL + ←,因为CTRL + v开关某种文字模式等待下一次按键。+

终端你得到^[[1;5D,所以正确的bindkey命令将是

bindkey '^[[1;5D' backward-word

请注意,这些组合键对于不同的终端确实是不同的!


+如果不起作用,请bindkey -e提前发出。

相关内容