如果您echo -e '\eZ'
在 xterm 中运行的 shell 中键入并按回车键,您将看到终端仿真器打印出晦涩的代码1;2c
。这似乎表明 xterm 解释 VT100 控制序列\eZ
(ESC Z
返回终端 ID)并相应地执行操作。
现在,如果您ESC Z
按同一个控制台,则不会发生任何事情。这是否意味着无法直接使用键盘发送控制字符?
我不确定这里发生了什么,因为按CTRL s
(控制流) 确实会停止控制台输出,直到您按CTRL q
。那么为什么CTRL s/q
有效而不有效呢ESC Z
?
答案1
VT100 对发送给它们的字符序列做出响应:输出。所以回显字符是有效的,因为终端将其视为输出。键入字符即为输入;仅当接收计算机回显字符时,终端才会响应。您的典型 shell 不会回显 ESC,而是将 ESC 解释为某些交互式输入命令的前缀。运行cat
并输入 ESC Z RETURN,您将看到通常的 VT100 响应。
答案2
另外,您通常可以先按键盘上的 CTL-V 告诉终端您希望直接传递 ESC 而不是使用它。当然,你仍然需要让它回显给你,所以在这种情况下不一定有帮助,但是当你在 VIM 中编辑文件并想要包含转义码时,这是一种方便的方法这样做。