.vimrc中的条件colorscheme

Ama*_*dan 17 vim

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

有没有办法检查调色板大小.vimrc并相应地设置两个colorschemes中的一个?如果这不可行,那么检查MacVim与vim也可以.

Bil*_*dom 25

你有几个选择.

我认为你最好的选择是加载一个colorscheme .vimrc,另一个加载.gvimrc(或者在你的情况下,根本不加载colorscheme .vimrc).在.gvimrc当你运行的MacVim的GUI版本色彩方案才会被加载.

如果您不想将配置拆分为多个文件,您还可以使用以下条件.vimrc:

if has('gui_running')
    colorscheme mycrazycolors
endif
Run Code Online (Sandbox Code Playgroud)

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

:echo &t_Co
Run Code Online (Sandbox Code Playgroud)

t_Co在MacVim的GUI版本中是空的,所以你可能仍然想要使用该has()技术的变体.实际上,默认情况.vimrc类似于确定何时启用语法突出显示:

if &t_Co > 2 || has("gui_running")
    syntax on
endif
Run Code Online (Sandbox Code Playgroud)

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

有关更多信息,请参阅以下主题

:help has()
:help termcap
:help termcap-colors
Run Code Online (Sandbox Code Playgroud)


Don*_*ith 5

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

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

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

if (match(system("uname -s"), "Darwin") != -1)
    colorscheme macscheme
else
    colorscheme otherscheme
endif
Run Code Online (Sandbox Code Playgroud)

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

  • 仅供参考:'uname -s`在我的Mac上打印出`Darwin`. (2认同)