我想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'