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