VT100是一个古老的终端定义,后面出现的终端几乎都兼容这种终端。VT100控制码是用来在终端扩展显示的代码。比如果终端上任意坐标用不同的颜色显示字符。有时又称为ANSI Escape Sequence.

  所有的VT100控制符是 \033打头(即ESC的ASCII码)用输出字符语句来输出。可以在命令行用echo -ne 命令,或者在C程序中用printf来输出VT100的控制字符。

 

具体格式有两种,

·          一种数字形式, \033[<数字>m .

   如 \33[40m,表示让后面字符输出用背景黑色输出 \33[0m表示取消前面的设置。

其中前景(字符颜色)/背景颜色需要同时输出。 

·          另一种是控制字符形式。即最后一个字符不是m,而是控制字符。

\033[K 清除从光标到行尾的内容

  \033[nC 光标右移n行

 

VT100控制码

 

VT100控制码归类如下。

  \33[nA光标上移n行 
\33[nB 光标下移n行 
\33[nC光标右移n行 
\33[nD 光标左移n行 
\33[y;xH设置光标位置 
\33[2J 清屏 
\33[K 清除从光标到行尾的内容 
\33[s 保存光标位置 
\33[u 恢复光标位置 
\33[?25l 隐藏光标 
\33[?25h 显示光标

 

VT100数字型控制码

 

   \33[0m 关闭所有属性 
\33[1m 设置高亮度 
\33[4m 下划线 
\33[5m 闪烁 
\33[7m 反显 
\33[8m 消隐 
\33[30m -- \33[37m 设置前景色 
\33[40m -- \33[47m 设置背景色 

 

 

VT100关于颜色的说明.

 

  VT100的颜色输出分为,注意要同时输出前景的字符颜色和背景颜色。

 

  背景颜色范围:40----49 
40:黑 
41:深红 
42:绿 
43:黄色 
44:蓝色 
45:紫色 
46:深绿 
47:白色 
  前景字符颜色:30-----------39 
30:黑 
31:红 
32:绿 
33:黄 
34:蓝色 
35:紫色 
36:深绿 
37:白色 

这样输出一个字符串比较完整如下

   echo -ne "\033[字背景颜色;字体颜色m字符串\033[0m" 

例:

   echo -ne "\033[41;36m something here \033[0m"

 

常见样例

 

echo -ne "\033[2J" #清屏

echo -ne "\033[47;30m Andrew Huang \033[0m" #黑底白字输出Andrew Huang

echo -ne "033[5;10H \033[42;33m abc \033[0m" #(10,5)输出绿底黄字。

 

 

关于VT100控制码编码

 

VT100只要printf打印相应的字符串即可支持相应功能,但是因为输出控制符虚列太多于难记,因此可通用一些宏来简化其操作。

 

 #define NONE          "\033[m"   

#define RED           "\033[0;32;31m"   

#define LIGHT_RED     "\033[1;31m"   

#define GREEN         "\033[0;32;32m"   

#define LIGHT_GREEN   "\033[1;32m"   

#define BLUE          "\033[0;32;34m"   

#define LIGHT_BLUE    "\033[1;34m"   

#define DARY_GRAY     "\033[1;30m"   

#define CYAN          "\033[0;36m"   

#define LIGHT_CYAN    "\033[1;36m"   

#define PURPLE        "\033[0;35m"   

#define LIGHT_PURPLE "\033[1;35m"   

#define BROWN         "\033[0;33m"   

#define YELLOW        "\033[1;33m"   

#define LIGHT_GRAY    "\033[0;37m"   

#define WHITE         "\033[1;37m"