JJJohn Asked: 2021-10-29 23:53:21 +0800 CST2021-10-29 23:53:21 +0800 CST 2021-10-29 23:53:21 +0800 CST ANSI 转义码“ESC[1;31m”将终端前景色设置为红色,“1”是什么意思? 772 根据维基百科页面,ANSI 转义码ESC[1;31m将终端前景色设置为红色,按预期工作 该 ANSI 转义码中有 2 个参数,1并且31. 我知道其中之一31,对应于下表中的前景色。那里是什么1意思? terminal 2 个回答 Voted Best Answer user1686 2021-10-30T00:02:46+08:002021-10-30T00:02:46+08:00 这在另一个表中记录了两段。 一般规则是ESC [ ... m由一个单独的 SGR 格式代码列表组成。第一个参数没有特殊含义——1只是“粗体”或“明亮”文本的格式代码。(是否使文本加粗或变亮,或两者兼而有之,取决于终端。) 作为一个更复杂的示例,ESC[;1;3;31;47m首先重置格式 (0),然后将文本设置为粗体 (1) 和斜体 (3),然后将前景设置为红色 (31),将背景设置为白色 (47)。 一般规则的例外情况: 请注意,“事实上”接受的 256 色和真彩色代码格式违反了此语法。例如,指定颜色 #42 的正确方法是ESC[38:5:42m(“38:5:42”是单个格式代码),但通常写为ESC[38;5;42m(好像它们是 3 个单独的代码),并且终端通常有特殊处理重新组合3个参数。 类似地,24 位或真彩色代码被正式写为ESC[38:2::R:G:Bm(具有许多子字段的单个代码),但您通常会看到它ESC[38;2;R;G;Bm。这再次在终端中进行了特殊处理,因为 5 个单独的“代码”被重新组合成一个真彩色格式代码。 egmont 2021-11-08T04:39:14+08:002021-11-08T04:39:14+08:00 我想用附注修改 user1686 的出色答案。 传统上,终端仅支持 16 种颜色(8 种基本颜色及其更亮的对应物)。后来 256 色支持出现并普及,现在几乎每个终端仿真器都支持它们。在过去的几年里,真彩色(1600 万色)扩展也变得相当普遍。但是,ESC[1m仍然只影响前 8 个调色板颜色的亮度,并且只影响前景色。(改变直接的 RGB 真彩色值绝对没有意义。) 同时,虽然其他字体或装饰有独立且明确的代码(如斜体为 3,下划线为 4 等),但没有任何方法可以启用没有副作用的粗体字体。 为了清理这一遗留问题并能够干净利落地向前推进,一些终端仿真器故意决定ESC[1m只切换到粗体字体,而不改变颜色。有些将其设为默认设置,同时允许您切换回旧行为,有些仅支持这种仅粗体行为。 我预计未来会有越来越多的终端仿真器走这条路。
这在另一个表中记录了两段。
一般规则是
ESC [ ... m
由一个单独的 SGR 格式代码列表组成。第一个参数没有特殊含义——1
只是“粗体”或“明亮”文本的格式代码。(是否使文本加粗或变亮,或两者兼而有之,取决于终端。)作为一个更复杂的示例,
ESC[;1;3;31;47m
首先重置格式 (0),然后将文本设置为粗体 (1) 和斜体 (3),然后将前景设置为红色 (31),将背景设置为白色 (47)。一般规则的例外情况:
请注意,“事实上”接受的 256 色和真彩色代码格式违反了此语法。例如,指定颜色 #42 的正确方法是
ESC[38:5:42m
(“38:5:42”是单个格式代码),但通常写为ESC[38;5;42m
(好像它们是 3 个单独的代码),并且终端通常有特殊处理重新组合3个参数。类似地,24 位或真彩色代码被正式写为
ESC[38:2::R:G:Bm
(具有许多子字段的单个代码),但您通常会看到它ESC[38;2;R;G;Bm
。这再次在终端中进行了特殊处理,因为 5 个单独的“代码”被重新组合成一个真彩色格式代码。我想用附注修改 user1686 的出色答案。
传统上,终端仅支持 16 种颜色(8 种基本颜色及其更亮的对应物)。后来 256 色支持出现并普及,现在几乎每个终端仿真器都支持它们。在过去的几年里,真彩色(1600 万色)扩展也变得相当普遍。但是,
ESC[1m
仍然只影响前 8 个调色板颜色的亮度,并且只影响前景色。(改变直接的 RGB 真彩色值绝对没有意义。)同时,虽然其他字体或装饰有独立且明确的代码(如斜体为 3,下划线为 4 等),但没有任何方法可以启用没有副作用的粗体字体。
为了清理这一遗留问题并能够干净利落地向前推进,一些终端仿真器故意决定
ESC[1m
只切换到粗体字体,而不改变颜色。有些将其设为默认设置,同时允许您切换回旧行为,有些仅支持这种仅粗体行为。我预计未来会有越来越多的终端仿真器走这条路。