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

Kao*_*Kao 10 terminal vim zsh oh-my-zsh iterm2

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

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

它应该是这样的: 在此处输入图片说明

但我得到的是:

在此处输入图片说明

Vim 也因此受到伤害,我希望:

在此处输入图片说明

我得到的:

在此处输入图片说明

这是我的偏好:

在此处输入图片说明

我玩过报告终端类型,但这是效果最好的一种,因为其他的更差。

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

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

Ada*_*hon 6

这里有两层设置/主题在起作用:

  • 终端或终端模拟器,在您的情况下是iTerm2

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

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

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

    许多(如果不是大多数)现代终端仿真器支持 256 种调色板,其中包括上述 16 种颜色、6x6x6 RGB 颜色立方体上的 216 种颜色和 32 种灰度颜色。除了前 16 种颜色之外,这些颜色对于大多数终端仿真器来说似乎是相同的(有关更多详细信息,请参阅我对 SO 上有关此问题的回答)。

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

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

  • 外壳或应用程序,在您的情况下zsh使用oh-my-zsh配置框架和vim

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

    print -P '%F{yellow}yellow %F{2}green %1Fred %F{117}light blue' 
    
    Run Code Online (Sandbox Code Playgroud)

    print -P像在提示中一样解释字符串。%F改变前景色。

    尽管大多数终端支持 256 色,但仍有相当多的主题仅使用(第一个)16 色。这有几个原因:

    • 它将“无处不在”(旧机器,配置错误的终端)。
    • 对于大多数终端模拟器,颜色可以很容易地修改为用户的口味。
    • 某些主题甚至可能早于 256 色终端的广泛可用性。

    相反,这并不是说没有使用 256 色的主题。我只是似乎您选择的不是其中之一。

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

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

  • 修改iTerm2设置以适应屏幕截图上的颜色
  • 使用另一个主题,它只使用颜色 16-256(大部分是固定的)
  • 使用启用真彩色的软件(例如iTerm2 beta(它可能很快会在发布版本中,如果还没有的话)和neovim)和主题(当启用真彩色时,neovim似乎使用 GUI 设置)。上面提到的 Gist有一个列表。