教程

ANSI 16 色说明

终端为什么使用 16 个 ANSI 颜色位、每个颜色控制什么,以及亮色变体与基础行有何区别。

终端主题定义 16 个 ANSI 位置。程序按编号请求颜色,而不是按 hex,所以“红色”具体是什么由主题决定。

两排颜色

位置 名称 常见用途
0 black 背景、弱文本
1 red 错误、删除
2 green 成功、新增
3 yellow 警告、修改的文件
4 blue 目录、链接
5 magenta 关键字、特殊值
6 cyan 信息、提示符
7 white 正文
8–15 亮色变体 粗体、强调、备用界面

前八个是普通行,后八个是亮色行。很多工具用亮色显示粗体,所以两排都要保证可读。

亮色不一定更亮

有些调色板的 bright red 是另一种色相,而不是更浅的红色。不要假设数学关系,16 个位置都要显式定义。

顺序为什么重要

Herdr App 主题文件、Ghostty、Alacritty、Kitty、iTerm2 和 Windows Terminal 都按同样顺序映射 16 个位置。顺序错了,git diff 的删除行会变绿。始终按 black, red, green, yellow, blue, magenta, cyan, white 再跟亮色变体的顺序排列。

16 色之外

背景、前景、光标和选区是独立字段。所以一个完整主题有 22 个值:16 个 ANSI + 背景 + 前景 + 光标 + 选区,另有可选的光标文字和选区文字。