C语言控制台光标定位及ANSI转义序列完整用法文档查询
常用ANSI转义序列(ESC开头)功能说明
你需要的是兼容VT100标准的ANSI控制转义序列,当前主流终端(Windows 10+ cmd/PowerShell、Linux/macOS 默认终端)均支持这类序列。以下说明中ESC代表ASCII码值0x1B(十进制27),<参数>代表可自定义传入的数字变量,省略参数时大部分场景默认取值为1。
光标控制类
ESC[<行号>;<列号>f/ESC[<行号>;<列号>H:两个序列功能完全等价,移动光标到指定行、列位置,省略参数时默认移动到屏幕左上角(1,1)位置ESC[<n>A:光标向上移动n行,到达屏幕顶部后无效果ESC[<n>B:光标向下移动n行ESC[<n>C:光标向右移动n列ESC[<n>D:光标向左移动n列ESC[<n>E:光标向下移动n行,且自动定位到新行的行首ESC[<n>F:光标向上移动n行,且自动定位到新行的行首ESC[<n>G:光标移动到当前行的第n列ESC[s:保存当前光标所在的位置ESC[u:恢复到之前用ESC[s保存的光标位置ESC[?25l:隐藏光标显示ESC[?25h:恢复光标显示
清屏/内容清除类
ESC[<n>J:清除屏幕内容,根据n的取值不同覆盖范围不同:- n=0:清除光标位置到屏幕末尾的所有内容
- n=1:清除屏幕开头到光标位置的所有内容
- n=2:清除整个屏幕的所有内容,光标位置不变
- n=3:清除整个屏幕+滚动缓冲区的所有内容
ESC[<n>K:清除当前行的内容,根据n的取值不同覆盖范围不同:- n=0:清除光标位置到行尾的内容
- n=1:清除行首到光标位置的内容
- n=2:清除整行内容,光标位置不变
文本样式控制类
ESC[<属性值>m:设置后续输出文本的样式属性,多个属性可以用分号分隔同时生效,比如ESC[31;42;1m代表设置红色前景、绿色背景、加粗效果
常用属性值:- 0:重置所有文本属性为终端默认值
- 1:加粗/高亮
- 3:斜体
- 4:下划线
- 5:慢闪烁
- 7:反显(前景色和背景色互换)
- 9:删除线
基础颜色取值(前景色范围30-37,背景色范围40-47): - 30/40:黑色
- 31/41:红色
- 32/42:绿色
- 33/43:黄色
- 34/44:蓝色
- 35/45:洋红色
- 36/46:青色
- 37/47:白色
24位真彩色设置方式:ESC[38;2;<r>;<g>;<b>m设置前景色,ESC[48;2;<r>;<g>;<b>m设置背景色,r/g/b取值范围为0-255
序列查询渠道
类Unix系统可以直接执行man console_codes命令查看系统自带的完整转义序列说明,也可以查阅对应终端(如xterm、VT100)的官方文档获取全量序列列表。
内容的提问来源于stack exchange,提问作者Bert
相关产品推荐
相关产品推荐

