删除键盘映射并完全禁用 zsh 中的键

删除键盘映射并完全禁用 zsh 中的键

我想Insert在 zsh 中完全禁用密钥。这个键没有什么实际用处,只是当我不小心敲到它的时候才会让我烦恼。

我找到了如何删除绑定overwrite-mode

bindkey -r "^[[2~"

但现在,当我实际点击 时,它会打印在光标位置上Insert,而不是激活覆盖模式。~

当我按下 时F12,会发生类似的事情,它与任何东西都没有绑定。它还打印~.

如何Insert完全禁用该键(以及F12),以便按下它不会在 zsh 中执行任何操作?

我不想Insert全局禁用密钥,因为其他一些程序实际上可能将它用于有用的目的。

答案1

如果您按特殊键(例如Insert)发送无法被 识别的转义序列zsh,它将执行此操作。 zsh 将尝试对转义序列的各个字节执行某些操作。

从结果来看bindkey,zsh似乎没有合适的功能可以绑定到一个键忽略它。但你可以重新绑定Insert到一个空宏:

bindkey -s '\e[2~' ''

同样对于F12.按Ctrl+V F12查看转义序列F12发送的内容,通常是

bindkey -s '\e[24~' ''

根据zshzle手册页,这种方法有一个限制:

与 ZLE 命令一样,可以使用“bindkey -s”将键序列绑定到其他字符串。当读取这样的序列时,替换字符串被推回作为输入,并且命令读取过程使用这些假击键再次开始。该输入本身可以调用其他替换字符串,但为了检测循环,如果存在则该过程将停止二十此类替换无需读取真正的命令。

按照我最初建议的方式绑定\a似乎没有这个缺点,即

bindkey -s '\e[2~' '\a'

相关内容