为什么OS X上的终端VIM中的256色调色板会发生变化?

时间:2012-04-01 18:37:27

标签: macos vim terminal

我一直在玩终端VIM的配色方案,并且发现了一些让我无法解决的令人沮丧的事情。

我希望16种系统颜色能够改变。它们显然是可配置的。出于这个原因,我试图使用256色调色板来构建一个VIM颜色方案,无论终端的16(可配置)系统调色板如何,它都是相同的。

我只使用了256色调色板中的颜色,包括背景。但是,我注意到如果我打开具有为终端指定的不同背景和文本颜色的终端,则VIM颜色方案在两个终端中显得截然不同。

即使终端具有不同的背景,前景和系统调色板,我也没有在Ubuntu上看到类似的行为。

我很乐意接受一个解释为什么会发生这种情况的答案。

如果有人能告诉我解决方法,除了为我想要使用的每组颜色设置设置一个特定的终端外,我会欣喜若狂。

6 个答案:

答案 0 :(得分:4)

默认情况下,ANSI终端是16种颜色设备,在gvim中使用的Vim颜色方案在终端中无法正常工作。

某些终端能够支持88或256色。您可以通过设置t_Co告诉Vim。当然,256种颜色仍然小于gvim中的完整RGB。

由Matt Wozniski开发的名为CSApprox的vim包。它允许您使用具有近似颜色的gvim颜色方案。

这就是我自己使用的。

CSApprox包含一个文档文件,可以更好地解释所有内容。

网址:http://www.vim.org/scripts/script.php?script_id=2390

祝你好运。

P.S。关于你的问题但是,我注意到如果我打开具有为终端指定的不同背景和文本颜色的终端,则两个终端中的VIM颜色方案看起来完全不同。

这听起来像OSX终端没有将颜色定义与256色xterm调色板分开;也就是说,通过操纵它的设置,你正在弄乱调色板或类似的东西。

终端应该可以将16色用户可配置的东西与256色调分开。

答案 1 :(得分:2)

终端动态调整某些颜色值,以确保与背景颜色的对比度最小。也许这就是你所看到的。

请附上显示两种不同配色方案的屏幕截图。查看可用颜色的好脚本是256colors2.pl

答案 2 :(得分:0)

请发布截图,以便我们看到您看到的内容。没有看到颜色或比较它们的数值就很难谈论颜色。

好吧,我仍然在10.6.8,所以我从未喜欢过Terminal.app能够显示256种颜色。

但是,AFAIK,其默认的16种颜色不是从X11调色板中获取的。它们可能在某处硬编码,无论如何它们的值都是用户可配置的。因此,我不知道为什么将默认Red值更改为任何内容会改变Vim colorscheme的外观。

但是,Terminal.app(与大多数其他终端模拟器一样)允许您更改BackgroundTextBoldSelection和{{1}的值}。根据您的colorschemes的编写方式,其中一些设置可能会覆盖您的colorscheme的一部分Cursor,最值得注意的是。

我的Terminal.app背景与我的Vim colorscheme的背景相匹配很长一段时间,效果很好。好吧,至少对于一个16色的终端模拟器。

答案 3 :(得分:0)

256色模式仍然只是一个索引调色板,与8和16色模式相同。应用程序只是从调色板中按索引选择一种颜色,由终端决定实际的颜色。

两个不同的终端碰巧为这些索引选择相同的颜色可能只是因为在216色RGB立方体中每个组件有6个级别,因此分配这些颜色的“明显”自然方式将是从列表中选择每个(00x330x660x990xcc0xff)。我想大多数终端都会这样做,因此在相同的指数处给出相同的颜色。

如果两个终端不同,则只是表示他们正在使用其他方法来选择实际颜色。

答案 4 :(得分:0)

如果您使用的是iTerm2,则可能需要更改报告的终端类型。

在您的iTerm2首选项>个人资料>终端>报告终端类型,设置为xterm-256color

答案 5 :(得分:0)

在Terminal.app又名Apple终端中,如果没有明确设置背景颜色,颜色也会改变。

因此,使用您的配色方案,您必须使用Normal颜色组设置默认背景颜色,例如:

hi Normal ctermfg=188 ctermbg=234

然后你不应该看到任何颜色的进一步变化。

注意:我只是注意到前景受到了影响,所以你不会错过任何重要的输出;)