[c/cpp]:ANSI转义序列(终端显示)
一、说明
ANSI转义序列是一种通过特殊字符序列控制终端显示属性的标准化协议。其核心特征和功能如下:
-- 基本结构
-- 以ESC字符(ASCII码27)和左方括号[开头
-- 支持三种表示方式:
// c_code
\033[ // 八进制形式
\x1B[ // 十六进制形式
\e[ // 转义字符简写
-- 核心功能分类
光标控制: 移动位置(H)、隐藏/显示(?25l/h)、保存/恢复位置(s/u)
屏幕操作: 清屏(2J)、清除行(K)
文本样式: 颜色(31m红字)、粗体(1m)、背景色(44m蓝底)
特殊效果: 闪烁(5m)、反显(7m)
-- 技术标准
-- 源自ANSI X3.64标准,后纳入ISO/IEC 6429国际标准
-- 取代了早期各终端厂商的私有控制协议
-- 总结
-- 典型应用场景包括终端游戏开发、命令行进度条、日志着色输出等。
-- 需注意Windows原生CMD对部分序列支持有限,
-- 而现代终端模拟器(如Linux终端、Windows Terminal)通常完全兼容。
二、ASCII转义控制符内容
ANSI转义序列中类似\033[2J的终端控制码主要包括以下几类:
-- 重要说明: ASCII转移控制符,不包含冒号(:)
-- 屏幕清除类
\033[2J 完全清屏并移动光标到左上角
\033[3J 清除滚动缓冲区历史
\033[K 清除从光标到行尾的内容
\033[1J 清除光标上方内容(保留下方)
\033[J 清除光标下方内容(保留上方)
-- 光标控制类
\033[H 移动光标到屏幕左上角
\033[y;xH 移动光标到第y行第x列
\033[nA 光标上移
\033[nB 下移n行
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标(l大写L)
\033[?25h 显示光标
-- 文本属性类
\033[0m 重置所有格式
\033[1m 高亮文本
\033[5m 闪烁效果
\033[7m 反色显示
-- 颜色控制类
\033[30-37m 设置前景色(黑/红/绿/黄/蓝/紫/青/白)
\033[40-47m 设置背景色(同上色系)
组合用法示例: \033[47;31m (白底红字)
这些控制码通过组合使用可实现动态终端界面效果,如\033[2J\033[H实现完全清屏并重置光标,或\033[s\033[u\033[J实现局部刷新效果。
-- 应用举例
//c_code
// 清屏
printf("\033[2J");
// 光标归位
printf("\033[H");
printf("%02d:%02d:%02d", h, m, s);
//隐藏光标:
printf("\033[?25l");
//显示光标:
printf("\033[?25h");
三、参考
1. \033[2J,这样类似的东西,还有哪些? -- chat.baidu.com
.
本文由 lnlidawei 原创、整理、转载,本文来自于【博客园】; 整理和转载的文章版权归属【原创作者】; 转载或引用时【请保留文章的来源信息】:https://www.cnblogs.com/lnlidawei/p/19056188

浙公网安备 33010602011771号