Gnu-Screen
為什麼 .screenrc 鍵綁定 ^@a 映射到 ctrl+space?
在我的 .screenrc 中,我有以下節:
# Change command key to ctrl+space escape ^@a
我在一個我再也找不到的論壇上找到了這個魔法咒語;它允許我按 ctrl+space 來呼叫螢幕命令,因此
ctrl+space c
(orctrl+space ctrl+c
) 將創建一個新視窗,並且ctrl+space space
(orctrl+space ctrl+space
) 將切換到最後一個視窗等。這對於避免排除行首終端功能的問題非常有用
ctrl+a
,易於鍵入並且不與任何標準鍵綁定衝突。誰能解釋為什麼以及如何工作?我已經通過https://www.gnu.org/software/screen/manual/screen.html搜尋了對該角色的任何引用,但
@
沒有發現任何相關內容。
對於很多終端程序(但不是每一個),control-SPACE 發送 ASCII 00 字元 (NUL)。
您可以看到這一點,例如使用
od -cx
並輸入 control-SPACE、RETURN、control_D。您將看到類似於以下內容的輸出:% od -cx ^@ 0000000 \0 \n 0a00 0000002
Control-@ 也是 NUL 字元(@ 是 ASCII 64,所以 control-@ 是 ASCII 00)。
所以映射 control-@ inside screen 具有映射 control-SPACE 的效果……因為終端如何處理 control-SPACE。