在这个线程,尤达建议使用以下颜色的解决方案zsh
#load colors
autoload colors && colors
for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do
eval $COLOR='%{$fg_no_bold[${(L)COLOR}]%}' #wrap colours between %{ %} to avoid weird gaps in autocomplete
eval BOLD_$COLOR='%{$fg_bold[${(L)COLOR}]%}'
done
eval RESET='$reset_color'
如果我错了,请纠正我,但如果我理解正确的话,autoload colors && colors
允许您通过颜色的名称来调用颜色,而脚本的其余部分只是将它们包装在${ $}
.
这让我思考了以下问题:
- 有没有办法知道通过调用加载了哪些颜色
autoload colors && colors
? - 我如何知道我的终端支持哪些颜色?
答案1
该colors
函数将颜色名称和类似属性(粗体、下划线等)记录在关联数组中color
。该数组将名称与终端属性字符串相关联,这些字符串是数字,例如00
↔ normal
、42
↔ bg-green
、...
echo ${(o)color}
如果你想了解数组是如何构建的,请查看函数的源代码:which colors
或less $^fpath/colors(N)
。
该函数仅定义8 种标准颜色的colors
名称和转义字符串(在关联数组fg
和 中)。bg
您的终端可能还有更多。看这个答案了解如何探索可用的颜色。