如果已经有人问过这个问题,我深表歉意,但我不知道如何自己找到这个问题 - 当我在任何搜索引擎中搜索“^[[A”时,它会完全忽略“^[[”部分。
无论如何,我的问题:有时在终端(在 Mac 上)中,当我按下箭头键时,会出现字符“^[[A”、“^[[B”、“^[[C”或“^[[D”” 。我似乎记得几年前在使用(很可能)DOS 时也遇到过,而且我认为它发生的频率也更高。
为什么会发生这种情况以及它们意味着什么?
答案1
这些都是ANSI 转义码。代表^[
一个ESC(转义)字符,接下来[
是一个实际的左方括号,字母表示转义码的功能。该Esc[
部分称为CSI(控制序列引入器)。因此该序列CSI
A
意味着向上箭头,或 CUU(CUrsor Up)。
无论如何,这个计划可以追溯到VT100显示终端(1978年推出)。 VT100 使用的一些转义序列在 20 世纪 80 年代初由 ANSI 标准化,此后一直被广泛使用。
通常,当您按下箭头键时,某些程序(例如 shell)正在监听并可以对它们采取行动。因此,当您点击向上箭头时,它会在命令历史记录中向后滚动。但是,如果一个程序正在运行不了解箭头键的转义序列,那么它们通常最终会像您可能按下的任何其他键一样回显到终端。这就是为什么有时您会看到^[[A
是否按下向上箭头键。