【问题标题】:Determine terminal/TTY background color at runtime在运行时确定终端/TTY 背景颜色
【发布时间】:2018-04-25 16:29:02
【问题描述】:

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

import chalk from 'chalk';

如果我使用:

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

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

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


给出的例子:

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

很难看清黑底蓝字。

【问题讨论】:

标签: node.js terminal tty chalk


【解决方案1】:

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

要通过交换背景/前景来突出显示特定序列,以便在所有配色方案中保持可读性,请使用 code 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 序列的信息的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多