

























不用超过 16 种颜色。终端程序很少使用 16 种 ANSI 基础色以外的颜色。原因是用 hex 码指定颜色很容易跟用户的背景色冲突——比如 #EEEEEE 在白色背景上几乎看不见。而基础 16 色,用户一般已经在终端模拟器里调好了。
文本编辑器是主要例外,比如 Helix 默认用紫色背景——但编辑器不算"核心"程序,用户不喜欢可以换主题。
管道中禁用颜色。大多数程序在输出到管道时会关闭颜色和格式化。比如 rg blah 在终端中高亮匹配,但 rg blah | cat 不会。 ls --color=auto 也一样:终端中用颜色,管道中不用。
如果你想强制保留颜色,可以用 unbuffer 欺骗程序让它以为自己在终端中。 unbuffer 来自 expect 包,原理是用伪终端(pty)包裹程序的输出,让程序以为自己连着真正的终端:
unbuffer rg blah | less -R rg --color=always blah | less -R
- 表示 stdin/stdout。给程序传 - 代替文件名,它就会从 stdin 读或往 stdout 写。比如在 Linux 上:
xclip -o | black - | xclip -i
这条规则只要适用就会被实现,但并非所有程序都支持。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。