我们经常可以看见 Linux 自带终端下的许多程序都输出了不同颜色和底纹的字体。最近也想要自己实现一下这种效果,方法是在输出流中插入占位符\033[***
。
我从网上收集了一些常用的控制语句,并用以下代码依次测试了一下效果:
#include <iostream> using namespace std; int main(){ cout << "\033[2J\033[0;0H"; for (int i = 0; i < 129;i++){ printf("\033[%dm\033[%dm)\033[0m\n", i, i); } }
\033[0m 关闭所有属性 \033[1m 高亮 \033[2m 亮度减半 \033[3m 斜体 \033[4m 下划线 \033[5m 闪烁 (效果图中未显示) \033[6m 快闪 \033[7m 反显 \033[8m 消隐 \033[9m 中间一道横线
31-37:设置前景色
41-47:设置背景色
(颜色在不同的终端中设置的 ANSI 颜色可能会有所不同)
90-106 和 31-37 一样,也是用来设置颜色的,不过会更加明亮一些。
除此之外,还有以下常用命令:
\033[nA 光标上移n行 \033[nB 光标下移n行 \033[nC 光标右移n行 \033[nD 光标左移n行 \033[y;xH设置光标位置 \033[2J 清屏 \033[K 清除从光标到行尾的内容 \033[s 保存光标位置 \033[u 恢复光标位置 \033[?25l 隐藏光标 \033[?25h 显示光标
在实际的使用的过程中,可以同时组合多种配置,并用分号分隔。比如\033[4;42m
可以输出绿色背景并带有下划线的文字。通常也会连续使用命令,用\033[2J;0;0H
可以清屏并将光标移到控制台左上角开始输出。