在我的 .screenrc 中,我有以下节:
# Change command key to ctrl+space
escape ^@a
我在一个我找不到的论坛上发现了这个神奇的咒语;它允许我按 ctrl+space 来调用屏幕命令,因此ctrl+space c
(或ctrl+space ctrl+c
) 将创建一个新窗口,并且ctrl+space space
(或ctrl+space ctrl+space
) 将切换到最后一个窗口,等等。
这对于避免排除行首终端功能的问题非常有用ctrl+a
,易于键入并且不会与任何标准键绑定冲突。
谁能解释一下这是为什么以及如何工作的?我已经搜索过https://www.gnu.org/software/screen/manual/screen.html对于该角色的任何参考@
,没有发现任何相关内容。
答案1
对于很多终端程序(但不是每个),control-SPACE 都会发送 ASCII 00 字符 (NUL)。
You can see this, eg with od -cx
and entering control-SPACE, RETURN, control_D. You'll see output similar to:
% od -cx
^@
0000000 \0 \n
0a00
0000002
Control-@ 也是 NUL 字符(@ 是 ASCII 64,因此 control-@ 是 ASCII 00)。
因此,在屏幕内映射 control-@ 具有映射 control-SPACE 的效果...因为终端处理 control-SPACE 的方式。