如何在 zsh 中绑定功能键?

如何在 zsh 中绑定功能键?

有人知道如何在 zsh 中绑定功能键吗?我希望能够在我的终端中运行的程序中使用功能键,而不是将它们绑定到 zsh 中的某个功能。我尝试将 bindkey "\e[OP" key_f1 放入 .zshrc 中,但当我尝试这样做时,我得到了 No such widget `key_f1'。有什么建议吗?

答案1

要明确地将一个键分配给它自己,请使用

bindkey "\e[OP" self-insert

要解除密钥绑定,请使用

bindkey -r "\e[OP"

要获取特定键的符号,您只需使用cat:因此cat Enter F1在我的终端 (URxVT) 中生成以下字符串:^[OP。这可能因终端而异,尤其是对于像Ctrl+这样的组合

但关于您的具体问题:我怀疑,这zsh就是函数键在您的程序中不起作用的原因,因为当程序运行时,zsh不应该捕获任何键。我认为更可能的是,程序本身不理解符号终端发送给它。因此,您可以尝试另一个终端(xterm对我来说,在大多数情况下都有效)。如果失败,您可能需要检查X 服务器~/.Xmodmap在 Linux 中,不幸的是我不知道在哪里调整 OSX...)

答案2

我一直在尝试分配功能键 F1-F12,并找到了一种方法:- 在 zsh 中,在 .zshrc 文件中使用以下命令:bindkey -s '\eOP' ' clear\n' 调整要分配的命令的第二部分。 键代码可以在网上找到。

对于 bash,使用此方法:将“\eOQ”:“clear\n”绑定到您的 .bashrc 文件中以供永久使用。

您使用的终端通常已经分配了 F1、F10 和 F11 键,只需转到键盘快捷键菜单并重新分配或取消它们。

F1=\eOP F2=\eOQ F3=\eOR F4=\eOS F5=\e[15~ F6=\e[17~ F7=\e[18~ F8=\e[19~ F9=\e[20~ F10=\e[21~ F12=\e[24~ 的按键序列应该可以在大多数终端上工作,如果不是用户读取命令或 Cv 并按下按键来检查按键序列或谷歌搜索的话。

相关内容