【问题标题】:How can I define custom colors for use in ZSH prompt?如何定义用于 ZSH 提示的自定义颜色?
【发布时间】:2012-12-01 22:00:40
【问题描述】:

我在配置我的 zsh 提示时遇到了一些困难。具体来说,我希望字体具有由十六进制代码定义的颜色:#87afdf

目前,我已经将提示设置如下:

PROMPT='%B[%d] 
➞  %b'

我尝试通过以下方式添加颜色:

autoload -U colors && colors

PROMPT='%{$fg[#87afdf]%}%B[%d]
➞  %b%{$reset_color%}'

但这只会给我以下胡言乱语:

$fg[#87afdf][/Users/gregory]
➞  $reset_color

任何关于如何进行的想法将不胜感激。

【问题讨论】:

    标签: configuration zsh prompt zshrc


    【解决方案1】:

    您必须使用 256 色调色板。您可以使用以下命令查看 ZSH 中 256 种颜色中每种颜色的数值:

    for code in {000..255}; do print -P -- "$code: %F{$code}Color%f"; done
    

    bash 也一样:

    for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Color"; done
    

    【讨论】:

      【解决方案2】:

      除非您使用非常不寻常的终端,否则您不能随意使用任何颜色组合。标准终端仅限于(最多)256-color palette。

      zsh 附带的colors 函数只是允许通过名称引用旧的 16 色调色板中的颜色,它不会帮助使用超出该范围的颜色。

      有一个 simple script 可用,它将设置 $FG 和 $BG 数组以提供一种按数字使用 256 色调色板中颜色的方法,但无需处理终端所需的转义序列处理这些。

      【讨论】:

        【解决方案3】:

        Oh-My-Zsh 用户解决方案

        如何打印可用颜色

        如前所述,您必须使用 256 色调色板。 查看可用颜色的最简单方法是使用以下命令(因为 ZSH 在下面使用光谱):

        spectrum_ls 
        

        它将打印所有可用的颜色

        ...

        如何在 Oh-my-zsh 主题中使用颜色

        要在您的主题中使用颜色,您必须将其写成 $FG[<0-255>],例如 $FG[172]
        大写可能很重要,因为 $fg[172] 在我的控制台上不起作用!

        可能的问题

        您的终端可能只支持 8 种颜色而不是 256 种颜色。如果是这样,您将不会在执行 spectrum_ls 后看到所有颜色。
        在这种情况下,您必须将终端配置为支持 256 色。

        来源

        https://dev.to/yujinyuz/custom-colors-in-oh-my-zsh-themes-4h13

        【讨论】:

          猜你喜欢
          • 2015-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-14
          • 2014-02-26
          • 2022-11-24
          相关资源
          最近更新 更多