我正在使用vim和MacVim。我有一个256色的colorscheme,我喜欢我的MacVim,但如果我把它加载到普通的vim,它显然不起作用(我得到了blinkies)。我希望能够在我的所有系统上使用相同的vim配置,所以:
有没有办法检查.vimrc
中的调色板大小并相应地设置两种颜色方案中的一种?如果这不可行,那么检查MacVim与vim也没关系。
答案 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,但我认为这是准确的。