Bash
如何臨時禁用終端中的 Escape 鍵?
我正在解析鍵盤輸入
read -n 1
,但我還沒有找到一種方法來區分鍵的實際按鍵Escape
和其他按鍵生成的控制序列的第一個轉義字元(字節),例如。LEFT
,RIGHT
…期間我不需要
Escape
密鑰read
,因此禁用它應該可以解決問題。Escape
有沒有辦法以本地化的方式禁用或重新分配密鑰?…僅適用於目前終端,僅適用於目前腳本。
無法從終端內部執行此操作。不幸的是,同一個
ESC
字元既可以用作鍵盤上特定鍵發送的字元,也可以用作多字元序列中的前綴。雙方的歷史先例都太強大了,無法被淹沒。應用程序要麼避免
Esc
單獨賦予意義,要麼延遲(1 秒很常見)。例如,在 vim 中,進入插入模式并ESC O D
快速按下;這相當於Left
按鍵。但是,如果您在按下 後等待太久Esc
,您將切換到正常模式並在目前模式上方插入一行(O
正常模式命令)。您也許可以重新配置終端仿真器,以便密鑰發送除( ) 字元
Esc
之外的一些轉義序列。但是,如果您執行一個密集使用密鑰的應用程序,例如 vi(m),這可能會適得其反。ESC``\e``ESC