使用Solarized的iTerm2中的vim颜色不正确


84

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

我也用solarized作vim。我的.vimrc中有以下几行

set background=dark
colorscheme solarized

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

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

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

Answers:


118

需要检查的几件事:

  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。

但是,如果使用的是默认的内置在Snow Leopard上的vim,它将无法正常工作,因为它不支持256色。我相信Lion的内置版本可以。

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

第二次编辑:如果已将晒干的调色板加载到iTerm2中,则必须let g:solarized_termcolors=16。仅let g:solarized_termcolors=256当您使用日晒调色板作为iTerm2颜色预设时。


13
实际上,“让g:solarized_termcolors = 256”是导致日晒显示不正确的原因。根据git repo(github.com/vim-scripts/Solarized),“对终端用户的重要提示:”,您应该“让g:solarized_termcolors = 16”。
西柏查德

3
如果您在终端上使用日光色配色方案,则将16种ANSI颜色设置为日光色,在这种情况下,您需要设置let g:solarized_termcolors=16。如果使用256,它将接近,但背景将是灰色,而不是深海蓝色。
帕克Selbert

2
看起来256给我的背景是灰色,而不是Lion上的深蓝色,但是16看起来和从vimrc中省略该变量完全一样。哦,好吧,深灰色比我以前得到的真正的浅灰色要好。
styfle 2012年

1
@SaiPerchard评论应添加到答案中。对我来说,这就是修复错误背景色的原因。
Marten Sytema 2013年

1
不适用于我:stackoverflow.com/a/12969298/1945990可以。ITerm,日光化主题加上vim日光化主题。
Mike W

91

上述答案对我不起作用。

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

如果上述解决方案也对您不起作用,请尝试此操作

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

更新:据吉姆·斯图尔特(Jim Stewart)说,这也适用于凯蒂


在这里对我也一样...感谢您的解决方案!
freitass 2012年

2
我在Windows 7上使用KiTTY(PuTTY派生),并let g:solarized_termtrans = 1为我解决了一个问题,即空白行上的背景色为灰色,但文本行上的背景色为内容后的黑色。
吉姆·斯图尔特

他们不是黑人:(
Setheron

如果您使用任何其他颜色方案,你可以hi Normal ctermbg=NONE,因为这基本上就是termtrans它在solarized(据我可以从他们的源告诉)
Achal戴夫

1
这是最接近的工作方式,它可以正确设置背景颜色,但是我的光标线,colorcolumn和行号列均具有黑色背景。为什么从来没有一件容易的事!
伊恩·沃恩

13

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

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

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

现在,您已将Solarized颜色预设加载到iTerm 2中,但尚未应用它们。要应用它们,只需从左侧的配置文件列表窗口中选择一个现有的配置文件,或创建一个新的配置文件。然后从“负载预设”下拉列表中选择“日光暗化”或“日光化”预设。

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

要么:

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

2
先前的答案都不能解决我的问题,但是这个答案可以。事实证明,我缺少的是颜色预设。
索菲亚·冯

10

这对我在iTerm 2的OS X 10.9.1和Terminal中都有效。我犯的一个错误是将colorscheme声明放在termtrans和termcolors设置之前(并且我需要两者都使它起作用)。正如其他人所说,我将终端类型设置为xterm-256color

if !has("gui_running")
    let g:solarized_termtrans=1
    let g:solarized_termcolors=256
endif

colorscheme solarized
set background=dark

7

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

这是我的解决办法。

  1. .vimrc

    语法启用集background = dark colorscheme solarized

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

在此处输入图片说明

  1. 将配置文件中的颜色预设设置为“日光暗”

在此处输入图片说明


支持,因为这是我尝试不同颜色预设所需的线索,这使我发现在Mac与Linux上,对256以上的颜色转义码进行了不同的处理。在Mac上,超过256的颜色似乎经过修改而不是变平为所选的8种ANSI颜色之一,Linux中的wheras似乎在进行模数转换并选择一种颜色。
Eric Leschinski

6

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

终端用户的重要注意事项:

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

如果您确实使用了自定义的终端颜色,则solarized.vim应该为您开箱即用。如果您使用的终端仿真器支持256色,并且不想使用自定义的Solarized终端色,则需要使用降级的256色方案。为此,只需在colorschem日光浴的行之前添加以下行:

let g:solarized_termcolors=256

再一次,我建议您只是手动地或通过许多可用于导入的终端方案中的一种将终端颜色更改为“日晒值”。


这是我可以让iTerm2在非GUI MacVim中使用日光色的唯一方法。
亚伦·特里布

4

比尔·特纳(Bill Turner)的答案有效,但是有一种方法可以使颜色与MacVim完全匹配。Solarized在其他终端仿真器中特别支持iTerm2。

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

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


正如答案所暗示的那样,比尔·特纳的答案也是正确的,但这是设定solarized主题的官方方法(因此是正确的)。
Can Can

1

解决此问题的一种简单方法是:

在vim-color-solarized的colors目录中,存在一个名为'solarozed.vim'的arquive。

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

替换为:
exe“ let s:bg_back ='” .s:vmode。“ bg =”。s:none。“'”



0

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.