1. ANSI终端颜色编码系统解析
作为一名长期与终端打交道的开发者,我发现很多同行对ANSI颜色编码存在误解——要么死记硬背各种数字组合,要么干脆放弃学习直接调用现成库。其实这套系统远比想象中简单,今天我就用实际开发经验带大家彻底掌握这套编码规则。
ANSI颜色编码本质上是通过向终端发送特殊控制序列来实现文本样式变化。这些序列以ESC字符(ASCII 27或\x1b)开头,后跟特定参数。现代终端通常支持四种颜色模式:
- 基础8色(前景+背景)
- 扩展8色(高亮版本)
- 256色模式
- 24位真彩色模式
关键提示:所有ANSI序列都以\x1b[开头,以m结尾,中间用分号分隔不同参数。例如\x1b[31;1m表示红色加粗文本。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心编码规则拆解
2.1 基础颜色编码
基础8色使用以下数字范围:
- 前景色:30-37
- 背景色:40-47
- 高亮前景:90-97
- 高亮背景:100-107
对应的颜色顺序都是:
0:黑 1:红 2:绿 3:黄 4:蓝 5:紫 6:青 7:白
python复制# Python示例:打印红色文字
print("\x1b[31m这是红色文字\x1b[0m")
2.2 256色模式编码
使用5;n格式,其中n为0-255的颜色编号:
- 前景:\x1b[38;5;nm
- 背景:\x1b[48;5;nm
颜色编号规律:
- 0-15:系统预设颜色
- 16-231:6×6×6 RGB立方体(每通道6级)
- 232-255:灰度渐变
python复制# 使用216号颜色(RGB各3级)
print("\x1b[38;5;216m这是珊瑚色文字\x1b[0m")
2.3 真彩色模式编码
使用2;R;G;B格式,支持1677万色:
- 前景:\x1b[38;2;R;G;Bm
- 背景:\x1b[48;2;R;G;Bm
python复制# 使用RGB(255,128,0)颜色
print("\x1b[38;2;255;128;0m这是橙色文字\x1b[0m")
3. 文本样式控制编码
样式控制使用单独的数字编码,最常用的有:
| 编码 | 效果 | 备注
