不确定这里是不是合适的提问地点,但我正试图跑步建筑与结构工程和微软终端并按照我实际的 Arch 安装进行样式设置。我正在尝试“移植”base16 平板灯到终端。
这是我制定的配色方案:
{
"background": "#ECF0F1",
"black": "#2C3E50",
"blue": "#3498DB",
"brightBlack": "#95A5A6",
"brightBlue": "#3498DB",
"brightCyan": "#1ABC9C",
"brightGreen": "#2ECC71",
"brightPurple": "#9B59B6",
"brightRed": "#E74C3C",
"brightWhite": "#ECF0F1",
"brightYellow": "#F1C40F",
"cyan": "#1ABC9C",
"foreground": "#7F8C8D",
"green": "#2ECC71",
"name": "Flat Light",
"purple": "#9B59B6",
"red": "#E74C3C",
"white": "#e0e0e0",
"yellow": "#F1C40F"
}
现在我的问题是黑色要么是透明的(不存在),要么与背景颜色相同。
从图像中可以看出,背景以及 admin@...(通常也是黑色)不是黑色,即使我在 Arch 安装上运行相同的命令,它的颜色也与字体颜色相同。
答案1
首先,您使用的 Windows Terminal 程序是 BETA 版。错误是意料之中的事情,您显然也发现了一个……或者没有……见仁见智。
看来终端通过将背景重置为该终端的默认背景来响应黑色代码。我认为这是 posix 标准的缺陷,但这取决于给定终端如何显示颜色。所以可能不是。不是我的战争。
还有一件事..在Linux终端中,不要使用转义码,使用 linux 命令 输出。它不会那么混乱,至少留下了一层来处理终端兼容性。对于不支持颜色的术语,您的代码将被删除。赢了,赢了。
我刚刚测试时发现,Microsoft 终端响应大量颜色,BLACK 为 0 表示前景,为 16(是的,16)表示背景。如果使用 0,您将恢复原始背景颜色。
以下代码片段展示了新终端支持的一些颜色。您必须将终端拉宽,才能使格式不至于太差。
for fg_color in {0..7}; do
set_foreground=$(tput setaf $fg_color)
for bg_color in {0..16}; do
set_background=$(tput setab $bg_color)
echo -n $set_background$set_foreground
printf ' F:%s B:%s ' $fg_color $bg_color
done
echo $(tput sgr0)
done
以下是我的显示屏上显示的内容。第一个索引显示为黑色,因为这是该终端的默认设置
我本来想把范围扩大一点,以显示所有可能的颜色,但我懒得编写所需的列格式。
我希望这有帮助。