400*_*Cat 9 colors zsh terminal gnome-terminator ansi
我知道如何在终端中为文本使用 256 种颜色:
printf "\033[38;5;196mhello\n"
Run Code Online (Sandbox Code Playgroud)
但是对于背景颜色,我似乎仅限于基本的8种颜色,即:
printf "\033[41mhello\n"
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用 256 色作为背景色?
我的意思是,终端已经知道颜色,所以应该是可能的。但是语法是什么?
如果相关,我将terminator用作我的终端模拟器和zsh我的外壳。
Sté*_*las 10
在 中zsh,您不需要对转义序列进行硬编码,因为它具有多种设置背景和前景色的内置方法。
您可以使用echoti setaf到set终端aNSI foreground颜色echoti setab设置background一个(setaf并且setab是相应的名称tERM iNFO能力)
假设您的终端支持 256 种颜色(就像基于 VTE 的颜色,例如您的 gnome-terminator 所做的那样)并且$TERM正确设置为一个值,该值标识具有正确转义序列的 terminfo 条目,它应该可以工作。
$ echoti setab 196 | sed -n l
\033[48;5;196m$
Run Code Online (Sandbox Code Playgroud)
或者您可以使用带有print -P或%参数扩展标志的提示扩展和:
$ print -rP '%K{196}' | sed -n l
\033[48;5;196m$
Run Code Online (Sandbox Code Playgroud)
(这里sed -n l用于显示正在发送的相应转义序列,$只是为了显示行结束的位置,它不是输出的一部分,\033是 GNUsed的l命令对 ESC 字符的表示(ASCII 中的八进制 033 字节值) )
某些终端(包括基于 VTE 的终端,例如 gnome-terminator)也支持 RGB 规范。在那些上,你可以做
$ print -rP '%K{#ffffff}' | sed -n l
\033[48;2;255;255;255m$
Run Code Online (Sandbox Code Playgroud)
(此处fffffff为亮白色,因为这是ff所有红色、绿色和蓝色分量的最大值)。在这种情况下,zsh硬编码 xterm 样式的序列(请参阅此处了解背景信息),因为没有相应的 terminfo 功能。虽然不是标准的,但它是目前现代 FLOSS 终端仿真器中最广泛支持的。
%K设置背景颜色,%F为前景。%k/%f恢复默认颜色。
对于不支持但支持 88 或 256 调色板的终端,zsh还有一个zsh/nearcolor模块可以为您提供最接近该 RGB 规范的颜色:
$ zmodload zsh/nearcolor
$ echoti colors
256
$ print -rP '%K{#ffffff}' | sed -n l
\033[48;5;231m$
Run Code Online (Sandbox Code Playgroud)
(这里我的 256 色终端上的颜色 231 是最接近亮白色的颜色,它实际上是亮白色)。
如果您有权访问 X11rgb.txt文件,您还可以为每个X11 颜色名称定义关联数组,如下所示:
typeset -A X11_bg X11_fg
while read -r r g b c; do
[[ $r = [0-9]* ]] || continue
printf -v hex %02x $r $g $b
X11_fg[$c]=${(%):-%F{#$hex}}
X11_bg[$c]=${(%):-%K{#$hex}}
done < /etc/X11/rgb.txt
X11_bg[default]=${(%):-%k} X11_fg[default]=${(%):-%f}
Run Code Online (Sandbox Code Playgroud)
(类似 Debian 的系统/etc/X11/rgb.txt作为x11-common软件包的一部分)。
做这样的事情:
print -r "$X11_bg[dark olive green]text$X11_bg[default]"
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅:
man 5 terminfoinfo zsh echotiinfo zsh printinfo zsh "Prompt Expansion"info zsh "The zsh/nearcolor Module"(请注意,在某些系统上,您需要安装一个zsh-doc包或等效项才能使info页面可用)。
| 归档时间: |
|
| 查看次数: |
2204 次 |
| 最近记录: |