在运行时确定终端/ TTY背景颜色

时间:2018-04-25 16:29:02

标签: node.js terminal tty chalk

使用粉笔库对终端进行样式化/着色。

import chalk from 'chalk';

如果我使用:

console.log(chalk.blue('foobar'));

在具有浅色背景的终端中完全可读,但在背景较暗的终端中完全无法读取。

有没有办法在运行时确定终端的背景颜色?

给出的例子:

"npm notice"日志级别是此问题的一个案例:

enter image description here

在黑色上阅读蓝色很难。

1 个答案:

答案 0 :(得分:2)

以下是关于 tty上下文 ANSI Escape sequences 的通用答案。

要通过交换背景/前景来突出显示特定序列,以便在所有配色方案中保持可读,请使用代码7反向视频

这种方式不需要事先了解调色板并进行调整。

bash 中的示例,使用反向视频:

echo -e "\033[7mHello world\e[0m"

这可以是链接,反向视频和红色背景:

echo -e "\033[31;7mHello world\e[0m"

这在所有背景上都是可读的,比如这个gif的第二行:

enter image description here

  

反向视频通常用于软件程序中作为视觉辅助   突出显示作为预防辅助的选择   描述错误,其中对对象执行预期的操作   那不是那个意图。它在现代桌面中更常见   环境将背景更改为其他颜色,如蓝色或   使用半透明背景来突出显示"选定的文字。   在终端上了解ANSI转义序列,反向视频   使用转义序列CSI 7 m 激活函数(等于    SGR 7 )。   https://en.wikipedia.org/wiki/Reverse_video

根据我自己的回答:How to change the output color of echo in Linux,这是一个关于 ansi序列 的大量信息的问题。