ANSI 转义序列¶
基本格式¶
\033或\x1B:表示“ESC”字符(ASCII 27)。[:固定格式。<参数列表>:一个或多个以分号分隔的数值,作为命令的参数。<命令类型>:一个分大小写的字母,告诉终端这是什么类型的命令。
| 格式(默认跟随\033[) | 说明(参数) |
|---|---|
<n>A |
光标上移 n 行(n 默认 1) |
<n>B |
光标下移 n 行(n 默认 1) |
<n>C |
光标右移 n 列(n 默认 1) |
<n>D |
光标左移 n 列(n 默认 1) |
<n>E |
光标移动到下 n 行的行首(n 默认 1) |
<n>F |
光标移动到上 n 行的行首(n 默认 1) |
<n>G |
光标移至本行第 n 列(n 从 1 起) |
<r>;<c>H 或 f |
光标移至第 r 行、第 c 列 |
<n>J |
清屏:0 光标至屏幕末;1 屏幕开头至光标;2 整屏清除 |
<n>K |
清行:0 光标至行尾;1 行首至光标;2 整行清除 |
<n>L |
在当前行上方插入 n 行空白行(n 默认 1) |
<n>M |
删除当前行并上移下方 n 行(n 默认 1) |
<n>P |
删除当前行光标处 n 个字符(n 默认 1) |
<n>S |
整屏上滚 n 行(n 默认 1) |
<n>T |
整屏下滚 n 行(n 默认 1) |
<n>X |
在光标处清除 n 个字符(n 默认 1) |
<n>Z |
光标左移到上一个制表位,重复 n 次(n 默认 1) |
?25h / ?25l |
设置/重置模式:25 显示/隐藏光标 |
s |
保存当前光标位置 |
u |
恢复到最近一次 s 保存的位置 |
<n>m |
设置文本属性:颜色(30–37, 40–47 等)、粗体(1)、下划线(4) 等 |
6n |
查询光标位置,终端返回 ESC[row;colR |
\033[c |
查询终端属性 |
<top>;<bot>r |
设置屏幕滚动区域,从第 top 行到第 bot 行 |
\033c |
完全重置终端(RIS) |
接下来按命令作用分类。
m - 控制显示样式¶
重置所有显示样式用 \033[0m。
1. 常用 SGR 参数¶
| 参数 | 含义 | 参数 | 含义 |
|---|---|---|---|
0 |
复位(所有属性) | 21 |
强制关闭粗体 |
1 |
粗体(Bright) | 22 |
正常强度 |
2 |
暗淡/灰色(Dim) | 23 |
关闭斜体/暗淡 |
3 |
斜体(Italic) | 24 |
关闭下划线 |
4 |
下划线(Underline) | 25 |
关闭闪烁 |
5 |
闪烁(Slow Blink) | 26 |
关闭快速闪烁 |
7 |
反显(Inverse) | 27 |
关闭反显 |
8 |
隐藏(Hidden) | 28 |
取消隐藏 |
9 |
删除线(Strike) | 29 |
关闭删除线 |
2. 标准 8 色与 16 色¶
- 前景色:30–37、90-97
- 背景色:40–47、100-107
| 30/40 系列色 | 90/100 系列 - 亮色 |
|---|---|
0 黑 |
90 亮黑(灰) |
1 红 |
91 亮红 |
2 绿 |
92 亮绿 |
3 黄 |
93 亮黄 |
4 蓝 |
94 亮蓝 |
5 品红 |
95 亮品红 |
6 青 |
96 亮青 |
7 白 |
97 亮白 |
3. 扩展色(256 色和真彩色)¶
256 色模式¶
格式
- 前景: 38;5;<n>
- 背景: 48;5;<n>
<n>范围0–2550–15:标准及亮色16–231:6×6×6 色块232–255:灰度级
真彩色(24-bit RGB)¶
-
格式
- 前景:
38;2;<r>;<g>;<b> - 背景:
48;2;<r>;<g>;<b>
- 前景:
-
<r>,<g>,<b>范围0–255
综合示例¶
光标控制¶
| 结尾 | 功能 | 说明 | 示例 |
|---|---|---|---|
A |
CUU(Cursor Up) | 光标上移 n 行(默认 1) | \033[5A 上移 5 行 |
B |
CUD(Cursor Down) | 光标下移 n 行(默认 1) | \033[3B 下移 3 行 |
C |
CUF(Cursor Forward) | 光标右移 n 列(默认 1) | \033[10C 右移 10 列 |
D |
CUB(Cursor Backward) | 光标左移 n 列(默认 1) | \033[2D 左移 2 列 |
H |
CUP(Cursor Position) | 将光标移动到行 r、列 c;同 \033[r;cH 或 \033[r;cF |
\033[12;40H 移动到12行40列 |
f |
HVP(Horizontal & Vertical Position)同 H |
— | \033[1;1f 回到左上角 |
清屏与清行¶
| 结尾 | 功能 | 参数 | 示例 |
|---|---|---|---|
J |
ED(Erase in Display) | 0:光标到屏幕末尾1:屏幕开头到光标2:整屏清除 | \033[2J 清除全屏 |
K |
EL(Erase in Line) | 0:光标到行尾1:行首到光标2:整行清除 | \033[0K 清除光标到行尾 |
注意
清除指令并不改变光标的位置,清理完一般要 \r 或 \033[1G 回到到本行行首(第1列)。
状态保存与恢复¶
| 结尾 | 功能 | 说明 | 示例 |
|---|---|---|---|
s |
SCP(Save Cursor Position) | 保存当前光标位置 | \033[s |
u |
RCP(Restore Cursor Position) | 恢复到最近一次 s 保存的位置 |
\033[u |
7 |
DECSC(Save DEC Private) | 保存光标与属性到 DEC 的私有缓冲区 | \0337 |
8 |
DECRC(Restore DEC Private) | 从 DEC 私有缓冲区恢复光标与属性 | \0338 |
滚动与分页¶
| 结尾 | 功能 | 说明 | 示例 |
|---|---|---|---|
S |
SU(Scroll Up) | 整屏上滚 n 行(默认 1) | \033[4S 上滚 4 行 |
T |
SD(Scroll Down) | 整屏下滚 n 行(默认 1) | \033[2T 下滚 2 行 |
g |
TBC(Tabulation Clear) | 0:清除当前 Tab 停靠点3:清除所有 | \033[3g 清除所有 Tab 点 |
模式设置(DEC Private Modes)¶
这些序列也以 h(Set Mode)和 l(Reset Mode)结尾,通过在 [ 与数字之间加 ? 来区分私有模式。
| 结尾 | 功能 | 常见私有模式 ?25(光标可见)?1049(切换备用缓冲区) | 示例 |
|---|---|---|---|
h |
SM(Set Mode) | \033[?25h:显示光标 |
\033[?1049h:进入备用缓冲区 |
l |
RM(Reset Mode) | \033[?25l:隐藏光标 |
\033[?1049l:退出备用缓冲区 |
报告与查询¶
| 结尾 | 功能 | 说明 | 示例 |
|---|---|---|---|
n |
DSR(Device Status Report) | 参数 5:报告终端就绪状态6:报告光标位置 | \033[6n 终端返回 \033[row;colR |
c |
DA(Device Attributes) | 查询终端类型 | \033[c |
其他常用序列¶
-
OSC(Operating System Commands),以
ESC ]开头,结尾用BEL或\033\\。常用于设置窗口标题: -
RIS(Reset to Initial State):
\033c,完整重置终端到出厂状态。 -
软字符集切换:
ESC ( …/ESC ) …,切换 G0/G1 字符集。