什么是\ u001b [9 ...选择控制台上出现的彩色文字的语法,如何添加更多颜色?

时间:2014-06-01 00:36:18

标签: node.js colors console windows-console

我正在使用debugcolors.js来获取比有限的4-6种颜色更多的颜色,但我仍然坚持要弄清楚这种着色语法

args[0] = ' \u001b[9' + c + 'm' + name + ' '
  + '\u001b[3' + c + 'm\u001b[90m'
  + args[0] + '\u001b[3' + c + 'm'
  + ' +' + exports.humanize(ms) + '\u001b[0m';
'blue' : ['\x1B[34m', '\x1B[39m'],
'cyan' : ['\x1B[36m', '\x1B[39m'],
'green' : ['\x1B[32m', '\x1B[39m'],
'magenta' : ['\x1B[35m', '\x1B[39m'],
'red' : ['\x1B[31m', '\x1B[39m'],
'yellow' : ['\x1B[33m', '\x1B[39m'],

我知道Windows控制台允许的颜色多于这六种颜色,因为color /?显示

0 = Black       8 = Gray
1 = Blue        9 = Light Blue
2 = Green       A = Light Green
3 = Aqua        B = Light Aqua
4 = Red         C = Light Red
5 = Purple      D = Light Purple
6 = Yellow      E = Light Yellow
7 = White       F = Bright White

如何理解这种语法并添加windows提供的额外颜色?

1 个答案:

答案 0 :(得分:8)

那些是ANSI terminal escape codes。具体来说,他们选择了图形再现" (SGR)转义码,包括:

  • "命令序列介绍人",由字符\x1B(ESC)和[组成,
  • 一个或多个数字命令,以分号和
  • 分隔
  • 字母m,结束代码并指示这是SGR代码。

有许多可能的数字命令(以及除SGR之外的许多其他转义码),但最相关的是:

  • 30-37:将文字颜色设置为0到7中的一种颜色
  • 40-47:将背景颜色设置为0到7中的一种颜色
  • 39:将文字颜色重置为默认值,
  • 49:将背景颜色重置为默认值,
  • 1:使文字变粗/亮(这是访问明亮颜色变体的标准方法),
  • 22:关闭粗体/亮色效果,
  • 0:将所有文本属性(颜色,背景,亮度等)重置为默认值。

因此,例如,可以使用代码\x1B[35;1;42m在绿色背景(eww!)上选择亮紫色文本。