rangersly e558ee3788 merge usingfix
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
2025-05-14 19:39:08 +08:00

5.0 KiB
Raw Blame History

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;
}