Gnu-Screen

為什麼 .screenrc 鍵綁定 ^@a 映射到 ctrl+space?

  • June 13, 2018

在我的 .screenrc 中,我有以下節:

# Change command key to ctrl+space
escape ^@a

我在一個我再也找不到的論壇上找到了這個魔法咒語;它允許我按 ctrl+space 來呼叫螢幕命令,因此ctrl+space c(or ctrl+space ctrl+c) 將創建一個新視窗,並且ctrl+space space(or ctrl+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。

引用自:https://unix.stackexchange.com/questions/449413