先明确:SGR的使用格式
在终端中,SGR通过ANSI转义序列触发,格式是:
1 | \033[参数1;参数2;...m 要设置样式的文本 \033[0m |
-
\033[:转义序列的起始标识(也可以写成\x1b[) -
参数1;参数2;...:多个SGR参数用分号分隔(比如同时设置“加粗+红色”就是1;31) -
m:转义序列的结束标识 -
\033[0m:必须加,用于重置所有样式(否则后续文本会继承当前样式)
分类型详细解释+用法示例
1. 基础样式(重置/格式)
| value | 功能 | 用法示例 | 效果说明 |
|---|---|---|---|
| 0 | 重置所有样式 | print("\033[0m重置后的文本") |
恢复终端默认文字样式 |
| 1 | 加粗/高亮 | print("\033[1m这是加粗文本\033[0m") |
文字变粗(部分终端是高亮) |
| 3 | 斜体 | print("\033[3m这是斜体文本\033[0m") |
文字倾斜(部分终端不支持) |
| 4 | 下划线 | print("\033[4m这是下划线文本\033[0m") |
文字下方加横线 |
2. 前景色(文字颜色)
(1)基础8色(30-37)
对应“黑、红、绿、黄、蓝、紫、青、白”,示例:
1 | # 红色文字(31) |
(2)高亮8色(90-97)
比基础色更明亮,示例:
1 | # 高亮红色(91) |
(3)256色(38;5;n)
通过“38;5+数字n”调用256色调色板(n范围0-255),示例:
1 | # 256色中的第196号(亮红色) |
(4)RGB色(38;2;r;g;b)
通过“38;2+r/g/b数值(0-255)”自定义颜色,示例:
1 | # RGB(255, 100, 100):浅红色 |
3. 背景色(文字底色)
(1)基础8色(40-47)
对应基础色的背景,示例:
1 | # 红色背景(41)+ 白色文字(37) |
(2)高亮8色(100-107)
更明亮的背景色,示例:
1 | # 高亮红色背景(101) |
(3)256色背景(48;5;n)
示例:
1 | # 256色第200号背景(暗紫色) |
(4)RGB背景(48;2;r;g;b)
示例:
1 | # 背景RGB(100, 200, 255)(浅蓝色) |
4. 多参数组合用法
可以同时加多个SGR参数(用分号分隔),比如“加粗+红色+下划线”:
1 | print("\033[1;31;4m加粗+红色+下划线的文字\033[0m") |
SGR是终端控制文字样式的“指令集”,通过不同数值参数组合,能实现**文字颜色、背景色、格式(加粗/斜体等)**的自定义,而我们平时用Python打印彩色文字,本质就是调用这些SGR参数~