为什么ANSI颜色逃逸结束于' m'而不是']'?

时间:2018-03-07 19:17:52

标签: colors language-agnostic escaping history ansi

在大多数编程语言中,

ANSI终端颜色转义可以使用\033[...m完成。 (您可能需要使用某些语言\e\x1b

对我而言似乎总是很奇怪的是他们如何从\033[开始,但他们以m结束。是否有一些历史原因(也许]被映射到了现在在ASCII表中被m占用?)或者它是一个任意的字符选择?

1 个答案:

答案 0 :(得分:1)

它并非完全随意,而是遵循委员会制定的计划,并在ECMA-48中记录(与ISO 6429相同)。除了最初的 Escape 字符外,后续字符由范围指定。

广泛使用 Escape [ 这一对(这称为控制序列介绍人 CSI ),还有其他控制序列(例如 Escape {{1 操作系统命令 OSC )。这些序列可能包含参数,以及最终字节

在问题中,使用 CSI ] 最终字节,其中碰巧告诉终端该序列应该做什么。给定的参数是数字列表。另一方面,使用 OSC ,命令类型位于开头,参数受限制较少(它们可能是任何可打印字符串)。