刪除鍵盤映射並完全停用 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'

相關內容