了解 zsh 中的颜色

了解 zsh 中的颜色

这个线程,尤达建议使用以下颜色的解决方案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允许您通过颜色的名称来调用颜色,而脚本的其余部分只是将它们包装在${ $}.

这让我思考了以下问题:

  1. 有没有办法知道通过调用加载了哪些颜色autoload colors && colors
  2. 我如何知道我的终端支持哪些颜色?

答案1

colors函数将颜色名称和类似属性(粗体、下划线等)记录在关联数组中color。该数组将名称与终端属性字符串相关联,这些字符串是数字,例如00normal42bg-green、...

echo ${(o)color}

如果你想了解数组是如何构建的,请查看函数的源代码:which colorsless $^fpath/colors(N)

该函数仅定义8 种标准颜色的colors名称和转义字符串(在关联数组fg和 中)。bg您的终端可能还有更多。看这个答案了解如何探索可用的颜色。

相关内容