前言
震惊过命令行中那些五颜六色的文本显示,使用包管理安装程序时进度条的变化,vim、Emacs等编辑器在终端中的实现。其实,这些都是Ansi Escape Codes的应用。
绝大部分Ansi Escape Codes都以\u001b开头。本文以python命令行交互环境演示。
Ansi Escape Codes的使用
字体颜色
8色
基本上所有的控制台都支持以下8种颜色:
格式: \u001b[${ID}m ID从30-37
- 黑色:
\u001b[30m - 红色:
\u001b[31m - 绿色:
\u001b[32m - 黄色:
\u001b[33m - 蓝色:
\u001b[34m - 洋红色:
\u001b[35m - 青色:
\u001b[36m - 白色:
\u001b[37m - 重置:
\u001b[0m
test.py
|
|
16色
大多数的控制台,除了支持刚才提到的8色外,还可以输出在此之上更加明亮的8种颜色:
格式: \u001b[${ID};1m ID从30-37
- 亮黑色:
\u001b[30;1m - 亮红色:
\u001b[31;1m - 亮绿色:
\u001b[32;1m - 亮黄色:
\u001b[33;1m - 亮蓝色:
\u001b[34;1m - 亮洋红色:
\u001b[35;1m - 亮青色:
\u001b[36;1m - 亮白色:
\u001b[37;1m
亮色指令分别在原来对应颜色的指令中间加上;1。
256色
除了16色外,某些控制台支持输出256色。指令的形式如下:
\u001b[38;5;${ID}mID从1-255
以下示例打印出256色矩阵
|
|
背景颜色
原理同字体颜色
8色:
- 黑色背景:
\u001b[40m - 红色背景:
\u001b[41m - 绿色背景:
\u001b[42m - 黄色背景:
\u001b[43m - 蓝色背景:
\u001b[44m - 洋红色背景:
\u001b[45m - 青色背景:
\u001b[46m - 白色背景:
\u001b[47m
16色:
- 亮黑色背景:
\u001b[40;1m - 亮红色背景:
\u001b[41;1m - 亮绿色背景:
\u001b[42;1m - 亮黄色背景:
\u001b[43;1m - 亮蓝色背景:
\u001b[44;1m - 亮洋红色背景:
\u001b[45;1m - 亮青色背景:
\u001b[46;1m - 亮白色背景:
\u001b[47;1m
256色:
\u001b[48;5;${ID}m
重置:
- 仍然是
\u001b[0m
样式设置
- 粗体:
\u001b[1m - 下划线:
\u001b[4m - 反色:
\u001b[7m
光标控制
- 光标向上移动:
\u001b[{n}A将光标向上移动n格。 - 光标向下移动:
\u001b[{n}B将光标向下移动n格。 - 光标向右移动:
\u001b[{n}C将光标向右移动n格。 - 光标向左移动:
\u001b[{n}D将光标向左移动n格。 - 光标按行向下移动:
\u001b[{n}E将光标向下移动n行并且将光标移至行首。 - 光标按行向上移动:
\u001b[{n}F将光标向上移动n行并且将光标移至行首。 - 设置光标所在列:
\u001b[{n}G将光标移至第n列(行数与当前所在行保持一致)。 - 设置光标所在位置:
\u001b[{n};{m}H将光标移至第n行m列,坐标原点从屏幕左上角开始。 - 保存光标当前所在位置:
\u001b[{s}。 - 读取光标上一次保存的位置:
\u001b[{u}。