.vimrc中的条件colorscheme

时间:2010-07-30 04:45:20

标签: vim

我正在使用vim和MacVim。我有一个256色的colorscheme,我喜欢我的MacVim,但如果我把它加载到普通的vim,它显然不起作用(我得到了blinkies)。我希望能够在我的所有系统上使用相同的vim配置,所以:

有没有办法检查.vimrc中的调色板大小并相应地设置两种颜色方案中的一种?如果这不可行,那么检查MacVim与vim也没关系。

2 个答案:

答案 0 :(得分:25)

你有几种选择。

我认为你最好的选择是在.vimrc加载一个colorscheme,在.gvimrc加载另一个colorscheme(或者在你的情况下,根本不加载.vimrc中的colorscheme) 。只有在运行GUI版MacVim时才会加载.gvimrc colorscheme。

如果您不想在多个文件中拆分配置,您还可以在.vimrc中使用类似这样的条件:

if has('gui_running')
    colorscheme mycrazycolors
endif

最后,如果您确实想知道可用的颜色数量,可以查看t_Co设置:

:echo &t_Co
在MacVim的GUI版本中,

t_Co为空,因此您可能仍希望使用has()技术的变体。实际上,默认.vimrc执行类似的操作以确定何时启用语法突出显示:

if &t_Co > 2 || has("gui_running")
    syntax on
endif

为了完整起见,我应该提一下,您还可以扩展您的colorscheme文件,以包含彩色终端的合理设置。然而,这是相当多的工作,并且可能更容易切换到支持更多颜色的终端应用程序。

有关详细信息,请参阅以下主题:

:help has()
:help termcap
:help termcap-colors

答案 1 :(得分:5)

我最近做了类似的事情,在我们所有的Linux系统上使用相同的.vimrc,但如果我在Ubuntu上运行,则使用Ubuntu等宽字体:

if (match(system("cat /etc/issue"), "Ubuntu") != -1)
    set guifont=Ubuntu\ Mono\ 13
else
    set guifont=Monospace\ 11
endif

在我看来,你可以做类似的事情,以检测你是在Mac上运行还是其他方式:

if (match(system("uname -s"), "Darwin") != -1)
    colorscheme macscheme
else
    colorscheme otherscheme
endif

请注意,我使用http://en.wikipedia.org/wiki/Uname来查找有关OS X的uname报告。我没有方便尝试使用Mac,但我认为这是准确的。