ANSI 转义序列
下面文章内容转自 fnky 将英文内容翻译成中文
以下内容为中文翻译内容
ANSI 转义序列
标准的转义码以前缀 Escape
开头:
- Ctrl-键:
^[
- 八进制:
\033
- Unicode:
\u001b
- 十六进制:
\x1B
- 十进制:
27
其后跟随命令,有时用左方括号 ([
) 分隔,称为控制序列引导符 (CSI),可选地后跟参数和命令本身。
参数用分号 (;
) 分隔。
例如:
\x1b[1;31m # 设置样式为粗体,红色前景。
序列
ESC
- 以ESC
(\x1B
) 开头的序列CSI
- 控制序列引导符:以ESC [
或 CSI (\x9B
) 开头的序列DCS
- 设备控制字符串:以ESC P
或 DCS (\x90
) 开头的序列OSC
- 操作系统命令:以ESC ]
或 OSC (\x9D
) 开头的序列
序列和参数之间的任何空格都应被忽略。它们的存在是为了提高可读性。
通用 ASCII 码
名称 | 十进制 | 八进制 | 十六进制 | C-转义 | Ctrl-键 | 描述 |
---|---|---|---|---|---|---|
BEL | 7 | 007 | 0x07 | \a | ^G | 终端铃声 |
BS | 8 | 010 | 0x08 | \b | ^H | 退格 |
HT | 9 | 011 | 0x09 | \t | ^I | 水平制表符 |
LF | 10 | 012 | 0x0A | \n | ^J | 换行 (新行) |
VT | 11 | 013 | 0x0B | \v | ^K | 垂直制表符 |
FF | 12 | 014 | 0x0C | \f | ^L | 换页 (也称:新页 NP ) |
CR | 13 | 015 | 0x0D | \r | ^M | 回车 |
ESC | 27 | 033 | 0x1B | \e * | ^[ | 转义字符 |
DEL | 127 | 177 | 0x7F | <none> | <none> | 删除字符 |
注意: 一些控制转义序列,例如
\e
代表ESC
,并不能保证在所有语言和编译器中都有效。建议使用十进制、八进制或十六进制表示作为转义码。注意: Ctrl-键 表示法只是将 ASCII 码 1 开始的不可打印字符与 ASCII 码 65 ("A") 开始的可打印(字母)字符相关联。ASCII 码 1 将是
^A
(Ctrl-A),而 ASCII 码 7 (BEL) 将是^G
(Ctrl-G)。这是一种常见的表示法(和输入方法),历史上源于 VT 系列终端之一。
光标控制
ESC 码序列 | 描述 |
---|---|
ESC[H | 将光标移动到起始位置 (0, 0) |
ESC[{行};{列}H ESC[{行};{列}f | 将光标移动到指定行号、列号 |
ESC[#A | 将光标向上移动 # 行 |
ESC[#B | 将光标向下移动 # 行 |
ESC[#C | 将光标向右移动 # 列 |
ESC[#D | 将光标向左移动 # 列 |
ESC[#E | 将光标移动到下一行的开头,向下 # 行 |
ESC[#F | 将光标移动到上一行的开头,向上 # 行 |
ESC[#G | 将光标移动到指定列 # |
ESC[6n | 请求光标位置 (报告为 ESC[#;#R ) |
ESC M | 将光标向上移动一行,如果需要则滚动 |
ESC 7 | 保存光标位置 (DEC) |
ESC 8 | 将光标恢复到上次保存的位置 (DEC) |
ESC[s | 保存光标位置 (SCO) |
ESC[u | 将光标恢复到上次保存的位置 (SCO) |
注意: 一些序列,例如保存和恢复光标,是私有序列,并未标准化。虽然一些终端模拟器(例如 xterm 及其衍生版本)同时支持 SCO 和 DEC 序列,但它们的功能可能不同。因此,建议使用 DEC 序列。
清除功能
ESC 码序列 | 描述 |
---|---|
ESC[J | 清除显示内容 (等同于 ESC[0J ) |
ESC[0J | 从光标位置清除到屏幕末尾 |
ESC[1J | 从光标位置清除到屏幕开头 |
ESC[2J | 清除整个屏幕 |
ESC[3J | 清除已保存的行 |
ESC[K | 清除行内内容 (等同于 ESC[0K ) |
ESC[0K | 从光标位置清除到行尾 |
ESC[1K | 从行首清除到光标位置 |
ESC[2K | 清除整行 |
注意:清除行不会移动光标,这意味着光标将停留在清除行之前的最后位置。你可以在清除行后使用
\r
将光标返回到当前行的开头。
颜色 / 图形模式
ESC 码序列 | 重置序列 | 描述 |
---|---|---|
ESC[1;34;{...}m | 设置单元格的图形模式,用分号 (; ) 分隔。 | |
ESC[0m | 重置所有模式 (样式和颜色) | |
ESC[1m | ESC[22m | 设置粗体模式。 |
ESC[2m | ESC[22m | 设置暗淡/浅色模式。 |
ESC[3m | ESC[23m | 设置斜体模式。 |
ESC[4m | ESC[24m | 设置下划线模式。 |
ESC[5m | ESC[25m | 设置闪烁模式 |
ESC[7m | ESC[27m | 设置反相/反转模式 |
ESC[8m | ESC[28m | 设置隐藏/不可见模式 |
ESC[9m | ESC[29m | 设置删除线模式。 |
注意: 某些终端可能不支持上面列出的某些图形模式序列。
注意: 暗淡和粗体模式都使用
ESC[22m
序列重置。ESC[21m
序列是双下划线模式的非指定序列,仅在某些终端中有效,并使用ESC[24m
重置。
颜色代码
大多数终端支持 8 色和 16 色,以及 256 色 (8 位)。这些颜色由用户设置,但具有通常定义的含义。
8-16 色
颜色名称 | 前景色代码 | 背景色代码 |
---|---|---|
黑色 | 30 | 40 |
红色 | 31 | 41 |
绿色 | 32 | 42 |
黄色 | 33 | 43 |
蓝色 | 34 | 44 |
洋红色 | 35 | 45 |
青色 | 36 | 46 |
白色 | 37 | 47 |
默认 | 39 | 49 |
除了基本的 8 种颜色外,大多数终端还支持“亮色”或“粗体”颜色。它们有自己的一组代码,与普通颜色类似,但在其代码中附加了一个 ;1
:
# 设置样式为粗体,红色前景。
\x1b[1;31mHello
# 设置样式为暗淡的白色前景和红色背景。
\x1b[2;37;41mWorld
支持 aixterm 规范 的终端提供 ISO 颜色的亮色版本,无需使用粗体修饰符:
颜色名称 | 前景色代码 | 背景色代码 |
---|---|---|
亮黑色 | 90 | 100 |
亮红色 | 91 | 101 |
亮绿色 | 92 | 102 |
亮黄色 | 93 | 103 |
亮蓝色 | 94 | 104 |
亮洋红色 | 95 | 105 |
亮青色 | 96 | 106 |
亮白色 | 97 | 107 |
256 色
以下转义码告诉终端使用给定的颜色 ID:
ESC 码序列 | 描述 |
---|---|
ESC[38;5;{ID}m | 设置前景色。 |
ESC[48;5;{ID}m | 设置背景色。 |
其中 {ID}
应替换为以下颜色表中 0 到 255 的颜色索引:
0-7
: 标准颜色 (如ESC [ 30–37 m
)8–15
: 高强度颜色 (如ESC [ 90–97 m
)16-231
: 6 × 6 × 6 立方体 (216 种颜色):16 + 36 × r + 6 × g + b
(0 ≤ r, g, b ≤ 5
)
一些模拟器将这些步骤解释为所有三个通道上的线性增量 (
256 / 24
),而其他模拟器可能明确定义这些值。
232-255
: 从暗到亮的 24 级灰度。
RGB 颜色
更现代的终端支持 真彩色 (24 位 RGB),允许您使用 RGB 设置前景和背景颜色。
这些转义序列通常没有详细的文档记录。
ESC 码序列 | 描述 |
---|---|
ESC[38;2;{r};{g};{b}m | 将前景色设置为 RGB。 |
ESC[48;2;{r};{g};{b}m | 将背景色设置为 RGB。 |
注意,
;38
和;48
对应于 16 色序列,并由终端解释为分别设置前景和背景颜色。而;2
和;5
设置颜色格式。
屏幕模式
设置模式
ESC 码序列 | 描述 |
---|---|
ESC[={值}h | 将屏幕宽度或类型更改为值指定的模式。 |
ESC[=0h | 40 x 25 单色 (文本) |
ESC[=1h | 40 x 25 彩色 (文本) |
ESC[=2h | 80 x 25 单色 (文本) |
ESC[=3h | 80 x 25 彩色 (文本) |
ESC[=4h | 320 x 200 4色 (图形) |
ESC[=5h | 320 x 200 单色 (图形) |
ESC[=6h | 640 x 200 单色 (图形) |
ESC[=7h | 启用换行 |
ESC[=13h | 320 x 200 彩色 (图形) |
ESC[=14h | 640 x 200 彩色 (16色图形) |
ESC[=15h | 640 x 350 单色 (2色图形) |
ESC[=16h | 640 x 350 彩色 (16色图形) |
ESC[=17h | 640 x 480 单色 (2色图形) |
ESC[=18h | 640 x 480 彩色 (16色图形) |
ESC[=19h | 320 x 200 彩色 (256色图形) |
ESC[={值}l | 使用与设置模式相同的值重置模式,但 7 除外,它禁用换行。此转义序列中的最后一个字符是小写 L。 |
常见的私有模式
这些是一些私有模式的示例,它们没有被规范定义,但在大多数终端中都已实现。
ESC 码序列 | 描述 |
---|---|
ESC[?25l | 使光标不可见 |
ESC[?25h | 使光标可见 |
ESC[?47l | 恢复屏幕 |
ESC[?47h | 保存屏幕 |
ESC[?1049h | 启用备用缓冲区 |
ESC[?1049l | 禁用备用缓冲区 |
有关 XTerm 定义的更深入的私有模式列表,请参阅 XTerm 控制序列。
注意:虽然这些模式可能受大多数终端支持,但有些可能无法在 tmux 等多路复用器中工作。
键盘字符串
ESC[{代码};{字符串};{...}p
将键盘按键重新定义为指定的字符串。
此转义序列的参数定义如下:
代码
是下表中列出的一个或多个值。这些值表示键盘按键和组合键。在命令中使用这些值时,除了转义序列所需的分号外,还必须键入此表中显示的分号。括号中的代码在某些键盘上不可用。除非您在ANSI.SYS
的DEVICE
命令中指定/X
开关,否则ANSI.SYS
不会解释这些键盘的括号中的代码。字符串
是单个字符的 ASCII 码或包含在引号中的字符串。例如,65 和 "A" 都可以用来表示大写 A。
重要提示: 下表中的某些值并非对所有计算机都有效。请查阅您计算机的文档以获取不同的值。
键盘字符串列表
按键 | 代码 | SHIFT+代码 | CTRL+代码 | ALT+代码 |
---|---|---|---|---|
F1 | 0;59 | 0;84 | 0;94 | 0;104 |
F2 | 0;60 | 0;85 | 0;95 | 0;105 |
F3 | 0;61 | 0;86 | 0;96 | 0;106 |
F4 | 0;62 | 0;87 | 0;97 | 0;107 |
F5 | 0;63 | 0;88 | 0;98 | 0;108 |
F6 | 0;64 | 0;89 | 0;99 | 0;109 |
F7 | 0;65 | 0;90 | 0;100 | 0;110 |
F8 | 0;66 | 0;91 | 0;101 | 0;111 |
F9 | 0;67 | 0;92 | 0;102 | 0;112 |
F10 | 0;68 | 0;93 | 0;103 | 0;113 |
F11 | 0;133 | 0;135 | 0;137 | 0;139 |
F12 | 0;134 | 0;136 | 0;138 | 0;140 |
HOME (数字键盘) | 0;71 | 55 | 0;119 | -- |
UP ARROW (数字键盘) | 0;72 | 56 | (0;141) | -- |
PAGE UP (数字键盘) | 0;73 | 57 | 0;132 | -- |
LEFT ARROW (数字键盘) | 0;75 | 52 | 0;115 | -- |
RIGHT ARROW (数字键盘) | 0;77 | 54 | 0;116 | -- |
END (数字键盘) | 0;79 | 49 | 0;117 | -- |
DOWN ARROW (数字键盘) | 0;80 | 50 | (0;145) | -- |
PAGE DOWN (数字键盘) | 0;81 | 51 | 0;118 | -- |
INSERT (数字键盘) | 0;82 | 48 | (0;146) | -- |
DELETE (数字键盘) | 0;83 | 46 | (0;147) | -- |
HOME | (224;71) | (224;71) | (224;119) | (224;151) |
UP ARROW | (224;72) | (224;72) | (224;141) | (224;152) |
PAGE UP | (224;73) | (224;73) | (224;132) | (224;153) |
LEFT ARROW | (224;75) | (224;75) | (224;115) | (224;155) |
RIGHT ARROW | (224;77) | (224;77) | (224;116) | (224;157) |
END | (224;79) | (224;79) | (224;117) | (224;159) |
DOWN ARROW | (224;80) | (224;80) | (224;145) | (224;154) |
PAGE DOWN | (224;81) | (224;81) | (224;118) | (224;161) |
INSERT | (224;82) | (224;82) | (224;146) | (224;162) |
DELETE | (224;83) | (224;83) | (224;147) | (224;163) |
PRINT SCREEN | -- | -- | 0;114 | -- |
PAUSE/BREAK | -- | -- | 0;0 | -- |
BACKSPACE | 8 | 8 | 127 | (0) |
ENTER | 13 | -- | 10 | (0 |
TAB | 9 | 0;15 | (0;148) | (0;165) |
NULL | 0;3 | -- | -- | -- |
A | 97 | 65 | 1 | 0;30 |
B | 98 | 66 | 2 | 0;48 |
C | 99 | 66 | 3 | 0;46 |
D | 100 | 68 | 4 | 0;32 |
E | 101 | 69 | 5 | 0;18 |
F | 102 | 70 | 6 | 0;33 |
G | 103 | 71 | 7 | 0;34 |
H | 104 | 72 | 8 | 0;35 |
I | 105 | 73 | 9 | 0;23 |
J | 106 | 74 | 10 | 0;36 |
K | 107 | 75 | 11 | 0;37 |
L | 108 | 76 | 12 | 0;38 |
M | 109 | 77 | 13 | 0;50 |
N | 110 | 78 | 14 | 0;49 |
O | 111 | 79 | 15 | 0;24 |
P | 112 | 80 | 16 | 0;25 |
Q | 113 | 81 | 17 | 0;16 |
R | 114 | 82 | 18 | 0;19 |
S | 115 | 83 | 19 | 0;31 |
T | 116 | 84 | 20 | 0;20 |
U | 117 | 85 | 21 | 0;22 |
V | 118 | 86 | 22 | 0;47 |
W | 119 | 87 | 23 | 0;17 |
X | 120 | 88 | 24 | 0;45 |
Y | 121 | 89 | 25 | 0;21 |
Z | 122 | 90 | 26 | 0;44 |
1 | 49 | 33 | -- | 0;120 |
2 | 50 | 64 | 0 | 0;121 |
3 | 51 | 35 | -- | 0;122 |
4 | 52 | 36 | -- | 0;123 |
5 | 53 | 37 | -- | 0;124 |
6 | 54 | 94 | 30 | 0;125 |
7 | 55 | 38 | -- | 0;126 |
8 | 56 | 42 | -- | 0;126 |
9 | 57 | 40 | -- | 0;127 |
0 | 48 | 41 | -- | 0;129 |
- | 45 | 95 | 31 | 0;130 |
= | 61 | 43 | --- | 0;131 |
[ | 91 | 123 | 27 | 0;26 |
] | 93 | 125 | 29 | 0;27 |
92 | 124 | 28 | 0;43 | |
; | 59 | 58 | -- | 0;39 |
' | 39 | 34 | -- | 0;40 |
, | 44 | 60 | -- | 0;51 |
. | 46 | 62 | -- | 0;52 |
/ | 47 | 63 | -- | 0;53 |
` | 96 | 126 | -- | (0;41) |
ENTER (小键盘) | 13 | -- | 10 | (0;166) |
/ (小键盘) | 47 | 47 | (0;142) | (0;74) |
* (小键盘) | 42 | (0;144) | (0;78) | -- |
- (小键盘) | 45 | 45 | (0;149) | (0;164) |
+ (小键盘) | 43 | 43 | (0;150) | (0;55) |
5 (小键盘) | (0;76) | 53 | (0;143) | -- |
资源
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »