ansi.md fix ADD: pro/tool/makefile add example one FIX: libs.md self log .vimrc fix auto makefile use Tab lib.md string delete
5.0 KiB
5.0 KiB
ANSI转义字符归纳表
在代码中检测是否支持ANSI C
#if __STDC__ == 1
文本样式控制
转义码 | 效果 | 说明 |
---|---|---|
\033[0m |
重置所有样式 | 关闭所有颜色和特效 |
\033[1m |
加粗/高亮 | |
\033[2m |
暗淡(弱化) | 部分终端不支持 |
\033[3m |
斜体 | 部分终端不支持 |
\033[4m |
下划线 | |
\033[5m |
闪烁(慢) | 部分终端不支持 |
\033[7m |
反色(前景/背景互换) | |
\033[8m |
隐藏(不可见) | |
\033[9m |
删除线 | 部分终端不支持 |
前景色
转义码 | 颜色 | 转义码(亮色) |
---|---|---|
\033[30m |
黑色 | \033[90m |
\033[31m |
红色 | \033[91m |
\033[32m |
绿色 | \033[92m |
\033[33m |
黄色 | \033[93m |
\033[34m |
蓝色 | \033[94m |
\033[35m |
品红 | \033[95m |
\033[36m |
青色 | \033[96m |
\033[37m |
白色 | \033[97m |
背景色
转义码 | 颜色 | 转义码(亮色) |
---|---|---|
\033[40m |
黑色 | \033[100m |
\033[41m |
红色 | \033[101m |
\033[42m |
绿色 | \033[102m |
\033[43m |
黄色 | \033[103m |
\033[44m |
蓝色 | \033[104m |
\033[45m |
品红 | \033[105m |
\033[46m |
青色 | \033[106m |
\033[47m |
白色 | \033[107m |
RGB 颜色
如果终端支持 24-bit 真彩色,可以使用:
printf("\033[38;2;<r>;<g>;<b>m"); // 设置前景色(RGB)
printf("\033[48;2;<r>;<g>;<b>m"); // 设置背景色(RGB)
示例:
printf("\033[38;2;255;100;0m这是橙红色文字\033[0m\n");
光标控制
转义码 | 作用 |
---|---|
\033[<n>A |
光标上移 <n> 行 |
\033[<n>B |
光标下移 <n> 行 |
\033[<n>C |
光标右移 <n> 列 |
\033[<n>D |
光标左移 <n> 列 |
\033[<y>;<x>H |
光标移动到第 <y> 行、第 <x> 列 |
\033[J |
清屏(光标以后) |
\033[1J |
清屏(光标以前) |
\033[2J |
清屏(整个屏幕) |
\033[K |
清除从光标到行尾的内容 |
\033[1K |
清除从光标到行首的内容 |
\033[2K |
清除全行的内容 |
\033[s |
保存光标位置 |
\033[u |
恢复光标位置 |
example
#include <stdio.h>
#if __STDC__ != 1
#error "NO ansi !"
#endif
int main(void) {
printf("-----TEXT STYLE-----\n");
printf("\033[0m\\033[0m\033[0m\n");
printf("\033[1m\\033[1m\033[0m\n");
printf("\033[2m\\033[2m\033[0m\n");
printf("\033[3m\\033[3m\033[0m\n");
printf("\033[4m\\033[4m\033[0m\n");
printf("\033[5m\\033[5m\033[0m\n");
printf("\033[6m\\033[6m\033[0m\n");
printf("\033[7m\\033[7m\033[0m\n");
printf("\033[8m\\033[8m\033[0m\n");
printf("\033[9m\\033[9m\033[0m\n");
printf("\n-----COLOR-----\n");
printf("\033[30m\\033[30m\033[0m - \033[90m\\033[90m\033[0m\n");
printf("\033[31m\\033[31m\033[0m - \033[91m\\033[91m\033[0m\n");
printf("\033[32m\\033[32m\033[0m - \033[92m\\033[92m\033[0m\n");
printf("\033[33m\\033[33m\033[0m - \033[93m\\033[93m\033[0m\n");
printf("\033[34m\\033[34m\033[0m - \033[94m\\033[94m\033[0m\n");
printf("\033[35m\\033[35m\033[0m - \033[95m\\033[95m\033[0m\n");
printf("\033[36m\\033[36m\033[0m - \033[96m\\033[96m\033[0m\n");
printf("\033[37m\\033[37m\033[0m - \033[97m\\033[97m\033[0m\n");
printf("\033[38;2;112;223;234m\\033[38;2;112;223;234m\033[0m\n");
printf("\033[40m\\033[40m\033[0m - \033[100m\\033[100m\033[0m\n");
printf("\033[41m\\033[41m\033[0m - \033[101m\\033[101m\033[0m\n");
printf("\033[42m\\033[42m\033[0m - \033[102m\\033[102m\033[0m\n");
printf("\033[43m\\033[43m\033[0m - \033[103m\\033[103m\033[0m\n");
printf("\033[44m\\033[44m\033[0m - \033[104m\\033[104m\033[0m\n");
printf("\033[45m\\033[45m\033[0m - \033[105m\\033[105m\033[0m\n");
printf("\033[46m\\033[46m\033[0m - \033[106m\\033[106m\033[0m\n");
printf("\033[47m\\033[47m\033[0m - \033[107m\\033[107m\033[0m\n");
printf("\033[48;2;112;223;234m\\033[48;2;112;223;234m\033[0m\n");
printf("\033[0m\n");
return 0;
}