【问题标题】:ANSI color code of solarized theme to customize my prompt日晒主题的ANSI颜色代码来自定义我的提示
【发布时间】:2020-06-25 06:35:08
【问题描述】:

我正在使用ANSI colors 来美化我的提示。

我正在使用solarized color pallet

为了获得颜色,我目前正在使用以下函数在颜色旁边生成 ANSI 颜色代码。

function colors() {
  for color in {000..255}; do
    print -P "$color: %F{$color} Foreground %f%K{$color} Background %k"
    # Use `print -P` instead of `echo` if you want to use color.
  done
}

然后我手动将它们与日晒色板进行比较。然后我正在使用它的 ANSI 代码并在我的提示中使用。例如:

prompt='%F{002}[%2~]%f$(git_super_status)%(?.%F{033}√.%F{124}✕%?)%F{033}$ %f'

有什么方法可以更准确地获取日晒色板的ANSI颜色代码?

【问题讨论】:

    标签: bash colors zsh ansi


    【解决方案1】:

    由于您已经在终端模拟器中定义了调色板,您可以使用 ANSI 3/4-bit color codes \033\[...m 代替 zsh 的 promt 扩展 print -P '%F{...}'。这样,您将始终使用调色板中的颜色,即使您更改了调色板。此外,颜色也适用于任何其他 shell,而不仅仅是 zsh。

    示例

    PS1=$'\033[31mThis is the same red as in your solarized palette\033[0m'
    

    使用颜色代码打印调色板

    echo 'use \033[CODEm Text \033[0m to set text color'
    for i in {0..7}; do
      for j in "3$i" "9$i"; do
        printf '\033[%sm Code %s ' "$j" "$j"
      done
      printf '\033[0m\n'
    done
    

    如果你不关心可移植性并且想使用 zsh 的 %F 语法,那么你可以使用代码 %F{1}%F{15} (这些代码已经被你自己的脚本打印了,但是因为还有更多而被忽略了颜色不仅仅是这些)。

    硬编码颜色

    如前所述,上述颜色代码使用终端模拟器中的调色板。如果无论终端模拟器设置如何,您总是想要相同的颜色,那么您可以在 zsh 中使用 6 位十六进制颜色代码:

    print -P '%F{#dc322f} This is always the red from the solarized palette'

    Wikipedia lists the hex color codes of the solarized palette.

    【讨论】:

    • 不过我需要日晒色板的颜色。
    • 由于您将终端模拟器配置为使用日晒主题,这也应该使用日晒颜色。你试过这个吗?你得到了哪些颜色?
    • 我实际上是在选择哪种颜色去什么地方。我当前的提示看起来像prompt='%F{061}[%2~]%f$(git_super_status)%(?.%F{064}✔.%F{124}✕%?)%F{033}$ %f'
    • 特别$(git_super_status) 使用多种颜色。
    • 对不起,我没有得到你最后的两个 cmets。您是否尝试过此答案中的命令? 是/否?如果您尝试了它们并发现颜色不在日晒调色板中,那么您的终端模拟器被配置为使用另一个调色板(而不是 solarized如您的屏幕截图所示)。在这种情况下,您可以使用十六进制颜色代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多