zsh ansi色码是如何工作的?

zsh ansi色码是如何工作的?,zsh,zshrc,Zsh,Zshrc,我想让我的终端主机名变成橙色。我该怎么做?打印 <ESC>[33mHostname<ESC>[0m [33mHostname[0m 作为转义字符\x1b首先,我不确定您使用的终端,或者它是否支持橙色。我的支持以下颜色:红色、蓝色、绿色、青色、黄色、洋红、黑色和白色。下面是我在终端中获得颜色的方法: 您需要首先使用“自动加载”加载颜色。我使用以下命令加载颜色并将其分配给有意义的名称 #load colors autoload colors && col

我想让我的终端主机名变成橙色。我该怎么做?

打印

<ESC>[33mHostname<ESC>[0m
[33mHostname[0m

作为转义字符\x1b

首先,我不确定您使用的终端,或者它是否支持橙色。我的支持以下颜色:红色、蓝色、绿色、青色、黄色、洋红、黑色和白色。下面是我在终端中获得颜色的方法:


您需要首先使用“自动加载”加载颜色。我使用以下命令加载颜色并将其分配给有意义的名称

#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%}'
您可以使用
%m
字符串在提示符中设置主机名

${RED}%m${WHITE}\>

这将打印类似于
bneil的内容。因此>

如果您熟悉定制zsh提示符的想法,但在颜色代码方面遇到问题,您的问题就不清楚了

互联网上有大量信息。这里有两个链接:


它们应包括自定义提示和使用颜色代码分配颜色。

在终端中运行以下代码应告诉您终端是否支持256种颜色

for COLOR in {0..255} 
do
    for STYLE in "38;5"
    do 
        TAG="\033[${STYLE};${COLOR}m"
        STR="${STYLE};${COLOR}"
        echo -ne "${TAG}${STR}${NONE}  "
    done
    echo
done
它还以
38;5;x
的形式显示每种颜色的代码,其中
x
是256种可用颜色之一的代码。
另外,请注意将
“38;5”
更改为
“48;5”
将向您显示等效的背景色。然后您可以使用前面提到的任何颜色来组成提示。

这是一个很棒的代码片段@yoda。您知道有没有方法1)知道自动加载颜色和颜色中加载了什么颜色?2)知道您的终端支持什么颜色?这些是l通过
autoload
加载。这个小循环仅仅将它们重命名为更直观的颜色名称(例如,
RED
而不是
fg\u no\u bold\u RED
或类似的名称)。如果您运行的是Mac OS X 10.6及以下版本,默认的Terminal.app将只支持16种颜色。您可以下载Mac的
iterm2
,这是一款很棒的终端,支持256种颜色。使用OS X 10.7,我认为Terminal.app支持256种颜色(尽管我无法验证,因为我尚未升级)。您还可以使用来查看它支持多少种颜色。@yoda,我也在重置中添加了百分比换行。否则,它也有同样的“奇怪的间距”问题。
${NONE}
的值是多少?