7

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

import chalk from 'chalk';

如果我使用:

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

这在浅色背景的终端中完全可读,但在深色背景的终端中完全不可读。

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


给出的例子:

"npm notice"日志级别就是这个问题的一个例子:

在此处输入图像描述

很难阅读黑色上的蓝色。

4

1 回答 1

4

以下是关于tty context中的ANSI Escape 序列的通用答案。

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

这样就不需要事先知道调色板和适应。

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

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

这可以是链式、反向视频和红色背景:

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

这将始终在任何背景下可读,例如此 gif 的第二行:

在此处输入图像描述

反向视频通常在软件程序中用作视觉辅助,以突出显示作为防止描述错误的辅助的选择,其中对非预期的对象执行预期的操作。在现代桌面环境中,将背景更改为其他颜色(例如蓝色)或使用半透明背景来“突出显示”所选文本更为常见。在理解 ANSI 转义序列的终端上,使用转义序列 CSI 7 m(等于 SGR 7 )激活反向视频功能。 https://en.wikipedia.org/wiki/Reverse_video

来自我自己的回答:How to change the output color of echo in Linux,一个包含很多关于ansi 序列信息的问题。

于 2018-05-06T23:17:53.977 回答