【问题标题】:Incorrect colors with vim in iTerm2 using Solarized使用 Solarized 在 iTerm2 中使用 vim 时颜色不正确
【发布时间】:2011-11-08 20:19:30
【问题描述】:

我在终端 vim(非 gui)和日晒配色方案中遇到了 iTerm2 的一个奇怪问题。首先,我已将 iTerm2 设置为使用暗日晒配色方案。

我也在为 vim 使用 solarized。我的 .vimrc 中有以下几行

set background=dark
colorscheme solarized

在终端中,配色方案看起来不正确:

作为参考,这是它在 MacVim (gui vim) 下的外观

我需要在 iTerm 或我的 .vimrc 中进行哪些更改才能在我的控制台 vim 中正确显示颜色?

【问题讨论】:

    标签: macos vim color-scheme iterm


    【解决方案1】:

    需要检查的几件事:

    1. 在 iTerm2 中,在首选项 -> 配置文件 -> 终端中,在“终端仿真”下,您将“报告终端类型:”设置为 xterm-256color。

    2. 在您的 .vimrc 中,您还可以设置一些选项以确保它使用 256 色:

      set background=dark
      " solarized options 
      let g:solarized_visibility = "high"
      let g:solarized_contrast = "high"
      colorscheme solarized
      
      其中一个应该可以工作,但首先是#1。

    但是,如果您使用的是默认的,内置于​​雪豹上的 vim,它将无法工作,因为它不支持 256 色。我相信 Lion 中的内置版本可以。

    编辑:基于这个答案的几个 cmets,我从上面的 .vimrc 示例中删除了 let g:solarized_termcolors = 256 行。对某些人来说,这似乎是个问题。另一个说添加行let g:solarized_termcolors = 16 修复了颜色显示问题。您自己的里程可能会有所不同。

    第二次编辑:如果您已将日晒调色板加载到 iTerm2 中,那么您必须let g:solarized_termcolors=16。只有let g:solarized_termcolors=256 如果您使用日晒调色板作为 iTerm2 颜色预设。

    【讨论】:

    • 实际上,“let g:solarized_termcolors = 256”是我日晒显示不正确的原因。根据 git repo (github.com/vim-scripts/Solarized),“终端用户的重要提示:”,您应该“让 g:solarized_termcolors=16”。
    • 如果您在终端上使用日晒配色方案,则 16 种 ANSI 颜色将设置为日晒颜色,在这种情况下您要设置 let g:solarized_termcolors=16。如果你使用 256 会很接近,但是背景会是灰色而不是深海蓝。
    • 似乎 256 在 Lion 上给了我灰色背景而不是深蓝色,但 16 看起来与从我的 vimrc 中省略该变量完全相同。哦,好吧,深灰色比我以前得到的真正浅灰色要好。
    • @SaiPerchard 评论应添加到答案中。对我来说,这是修复错误背景颜色的原因。
    • 对我不起作用:stackoverflow.com/a/12969298/1945990 起作用了。 ITerm,日晒主题加上 vim 日晒主题。
    【解决方案2】:

    以上答案对我不起作用。

    我在 OS X 10.7.4 上使用 iTerm2 和 vim 7.3。

    如果上述解决方案也不适合你,试试这个

    syntax on
    set background=dark
    let g:solarized_termtrans = 1
    colorscheme solarized
    

    更新:根据 Jim Stewart 的说法,这也适用于 Kitty

    【讨论】:

    • 我在 Windows 7 上使用 KiTTY(PuTTY 衍生产品),let g:solarized_termtrans = 1 为我解决了一个问题,即空白行的背景颜色为灰色,但带有文本的行的背景颜色为黑色在内容之后。
    • 他们不是黑人 :(
    • 如果你使用任何其他配色方案,你可以hi Normal ctermbg=NONE,因为这基本上就是termtrans 在日光下所做的(据我所知,他们的来源)
    • 在 OSX 10.9、iTerm2 1.0.0.20131109 上为我工作。
    • 这是最接近工作的,它正确设置了背景颜色,但我的光标线、颜色列和行号列都有黑色背景。为什么没有什么是容易的!
    【解决方案3】:

    https://github.com/altercation/solarized/tree/master/iterm2-colors-solarized

    下载 Solarized 包 (https://github.com/altercation/solarized) 并按照说明进行操作:

    打开 iTerm 2,打开首选项,单击首选项工具栏中的“配置文件”(以前的地址,以前的书签)图标,然后选择“颜色”选项卡。单击“加载预设”并选择“导入...”。选择 Solarized Light 或 Dark 主题文件。

    您现在已经将 Solarized 颜色预设加载到 iTerm 2 中,但是 还没有应用它们。要应用它们,只需选择现有的 从左侧的配置文件列表窗口中选择配置文件,或创建一个新的 轮廓。然后选择 Solarized Dark 或 Solarized Light 预设 “加载预设”下拉菜单。

    ======================================

    或者:

    cd ~/.vim/bundle
    git clone git://github.com/altercation/vim-colors-solarized.git
    

    修改.vimrc

    黑暗主题:

    syntax enable
    set background=dark
    colorscheme solarized
    

    syntax enable
    set background=light
    colorscheme solarized
    

    【讨论】:

    • 之前的答案都没有解决我的问题,但这个答案可以。事实证明,我缺少的是颜色预设。
    【解决方案4】:

    这在 iTerm 2 和终端的 OS X 10.9.1 中对我有用。我犯的一个错误是将颜色方案声明放在 termtrans 和 termcolors 设置之前(我需要这两者才能使其工作)。正如其他人所说,我将终端类型设置为 xterm-256color

    if !has("gui_running")
        let g:solarized_termtrans=1
        let g:solarized_termcolors=256
    endif
    
    colorscheme solarized
    set background=dark
    

    【讨论】:

      【解决方案5】:

      我在 OSX 10.11.6、iTerm2 Build 3.0.12 上遇到了同样的问题。

      这是我的解决方法。

      1. .vimrc

        语法启用 设置背景=深色 日晒的配色方案

      2. 将报告终端类型设置为xterm-256color

      1. 将配置文件中的颜色预设设置为 Solarized Dark

      【讨论】:

      • 赞成,因为这是我需要尝试不同颜色预设的线索,这让我发现超过 256 的颜色转义码在 mac 和 linux 上的处理方式不同。在 mac 上,超过 256 的颜色似乎被修改而不是扁平化为所选的 8 种 ANSI 颜色之一,而在 linux 中似乎正在做一个模数,它环绕并选择一种颜色。
      【解决方案6】:

      来自创作者:http://ethanschoonover.com/solarized/vim-colors-solarized

      终端用户重要提示:

      如果您打算在终端模式下使用 Solarized(即不在 gvim 或 macvim 等 GUI 版本中),请考虑将终端模拟器的颜色方案设置为使用 Solarized 调色板。我在 Solarized 主页提供的官方 Solarized 下载中包含了一些流行的终端仿真器和 Xdefaults 的调色板。如果您在没有这些颜色的情况下使用 Solarized,则需要告知 Solarized 将其颜色方案降级为与有限的 256 终端调色板兼容的集合(而通过使用终端的 16 ansi 颜色值,您可以为 Solarized 设置正确的特定值调色板)。

      如果您确实使用自定义终端颜色,solarized.vim 应该适合您。如果您使用的是支持 256 色的终端模拟器并且不想使用自定义的 Solarized 终端颜色,则需要使用降级的 256 色方案。为此,只需在 colorschem solarized 行之前添加以下行:

      let g:solarized_termcolors=256

      再次,我建议您手动或通过可用于导入的众多终端方案之一将终端颜色更改为 Solarized 值。

      【讨论】:

      • 这是我能让 iTerm2 在非 GUI MacVim 中使用日晒颜色的唯一方法。
      【解决方案7】:

      Bill Turner 的回答有效,但有一种方法可以让颜色与 MacVim 完全匹配。 Solarized 专门支持 iTerm2 以及其他终端仿真器。

      1. 转到iterm2-colors-solarized github page
      2. 按照“安装”下的说明进行操作
      3. 确保你的 .vimrc 中有 colorscheme solarized

      这应该将 iTerm2 中的 vim 颜色设置为与 gui 编辑器中的颜色完全相同。

      【讨论】:

      • 正如答案所暗示的,比尔特纳的答案也是正确的,但这是设置solarized 主题的官方(因此正确)方式。
      【解决方案8】:

      解决这个问题的一个简单方法是:

      在 vim-color-solarized 的颜色目录中存在一个名为 'solarozed.vim' 的文件

      打开此文件并搜索:
      exe "let s:bg_back = '".s:vmode."bg=".s:back ."'"

      替换为:
      exe "let s:bg_back = ' ".s:vmode."bg=".s:none ."'"

      【讨论】:

        【解决方案9】:

        对于任何仍然像我一样的问题,我已经安装了 iterm2 solarized color profile。将vim-color-solarized 安装到 vim 包并按照说明进行操作是不必要的并且不兼容。上面的屏幕截图中存在一些有趣的突出问题。

        经验教训:不要两者都做。

        【讨论】:

          【解决方案10】:

          我尝试了之前的所有建议。我刚刚将 set t_Co=256 添加到 .vimrc 并修复了它。我不需要创建 tmux 别名或更改我的配置文件。

          【讨论】:

            【解决方案11】:

            以前的答案都不适合我。显然我失踪了:

            set termguicolors
            

            【讨论】:

              猜你喜欢
              • 2013-03-11
              • 2012-12-15
              • 2013-01-15
              • 1970-01-01
              • 2015-07-07
              • 1970-01-01
              • 1970-01-01
              • 2012-09-28
              • 2013-08-10
              相关资源
              最近更新 更多