iTerm 2 ZSH 颜色/主题显示不正确

iTerm 2 ZSH 颜色/主题显示不正确

我有一台全新安装的 Mac,运行 OS X 10.11.4。
我已经安装了 iTerm 2,并将其设置为使用 oh-my-zsh。

我正在尝试为我的 iTerm 设置主题。我正在尝试使用 avit 主题。

它看起来应该是这样的: 在此处输入图片描述

但我得到的是:

在此处输入图片描述

我预计 Vim 也会受到此影响:

在此处输入图片描述

我得到的是:

在此处输入图片描述

这是我的偏好:

在此处输入图片描述

我曾尝试过各种报告终端类型,但这个是效果最好的,因为其他的则不太合适。

我的 .zshrc 看起来像这样: http://pastebin.com/ixe72yjP
请注意,pastebin 说的是 kardan 主题,但它不适用于任何主题

编辑
似乎 iTerm 的颜色覆盖了主题中定义的颜色。这是预期行为吗?

答案1

这里有两层设置/主题:

  • 根据您的情况,终端或终端仿真器iTerm2

    根据终端的不同,仅支持有限的调色板。“传统​​上”有 16 种颜色:8 种正常颜色和 8 种浅色/亮色。它们分别被分配代码 0 到 7 和 8 到 15。它们也有名称,代码nn+8名称相同:

    • 08黑色的
    • 19红色的
    • 210绿色的
    • 311: 黄色
    • 412: 蓝色
    • 513:洋红色
    • 614:青色
    • 715: 白色

    虽然名称定义明确,但确切的颜色值却不明确,即使在不同终端的默认设置中也有很大差异。(例如,请查看颜色维基百科页面上的部分ANSI 转义码)。大多数终端仿真器允许用户自由配置这 16 种颜色(请查看颜色选项卡)。

    许多(如果不是大多数)现代终端仿真器都支持 256 色调色板,其中包括上面提到的 16 种颜色、6x6x6 RGB 颜色立方体上的 216 种颜色和 32 种灰度颜色。除了前 16 种颜色外,大多数终端仿真器的颜色似乎都相同(参见我对这个问题的回答更多细节)。

    甚至越来越多地支持 24 位真彩色。据这个要点 iTerm2在测试版中已经支持此功能。(您可以使用 进行检查for a in {0..255}; printf "\x1b[48;2;255;${a};0m \x1b[0m"。它应该会打印出从红色到黄色的平滑渐变。)

    简而言之:终端(iTerm2) 主题只是将索引映射到真彩色 RGB 值的调色板。有些终端(至少在 Linux 上;我不知道操作系统iTerm2特别是)实际上实现了可切换的颜色主题。

  • shell 或应用程序,在你的情况zsh哦我的天啊配置框架和vim

    由于 24 位真彩色尚未得到广泛支持,主题通常通过终端调色板上的索引号甚至名称来设置颜色。例如

    print -P '%F{yellow}yellow %F{2}green %1Fred %F{117}light blue' 
    

    print -P按照提示解释字符串。%F更改前景色。

    尽管大多数终端支持 256 种颜色,但仍然有不少主题仅使用(前)16 种颜色。原因如下:

    • 它可以在“任何地方”工作(旧机器、配置错误的终端)。
    • 对于大多数终端仿真器来说,用户可以轻松修改颜色以适应其喜好。
    • 有些主题甚至可能早于 256 色终端的广泛普及。

    这并不是说没有使用 256 种颜色的主题,恰恰相反。我只是觉得您选择的主题不在其中。

    简而言之:终端(或应用程序)主题只能分配给颜色代码不是真彩色 RGB 值。实际颜色取决于终端设置。如果在终端中更改颜色,则会影响在其中运行的所有应用程序。

因此,预期结果的屏幕截图与实际结果之间的差异是由于终端颜色设置的差异造成的。要解决这个问题,您可以:

  • 修改iTerm2设置以适合屏幕截图上的颜色
  • 使用另一个主题,该主题仅使用 16-256 种颜色(大部分是固定的)
  • 使用支持真彩色的软件(例如iTerm2beta 版(如果还没有发布,可能很快就会发布)新病毒) 和主题 (新病毒当启用真彩色时似乎使用 GUI 设置)。上述要点有一个列表。

相关内容