Jen*_*son 27
终端仿真器,如gnome-terminal
(“终端”在Ubuntu),而且xterm
和urxvt
因为它们再现了旧的终端经电脑的唯一显示器的行为被命名为“模拟器”。此类终端通过基于文本的协议与计算机通信,最初设计为仅接收文本。很快,需要更多的控制:如何擦除一行?使用颜色?或者改变光标位置?
转义序列是为每个终端设计的来做这样的事情。它们被命名为转义,因为它们以 ASCII 转义码开头:33
。没有办法直接打印这样的字符,这使得它非常适合这样的序列。当我们仍然想显示这个字符时,^[[
使用,这就是我将在我的解释中使用的。
当终端收到时^[[A
,它的意思不是“打印^[[A”,而是“用户按下了上箭头键”。这里的“A”完全是随意的:它恰好是每个人都同意的字母,因为这就是 DEC VT-52 及其后继流行的 VT-100 终端所使用的。
来源:1976 年 DEC VT-52 维护手册
这仍然是今天终端模拟器的工作方式:根据$TERM
变量,一个名为terminfo
负责说明应该将哪些代码发送到 shell(bash、sh、zsh...),然后负责理解它们并做出反应给他们。
现在,Shift+的代码up恰好是^[[1;2A
:终端仿真器将此代码发送到外壳程序,外壳程序尝试解释^[[1;2
但不显示任何内容,因为它不知道该转义序列。但A
被留下并显示。
归档时间: |
|
查看次数: |
3465 次 |
最近记录: |