我正在使用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)
我最近做了类似的事情,在我们所有的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,但我认为这是准确的.