2010-07-30 41 views
15

我正在使用vim和MacVim。我有一個256色colorscheme,我喜歡我的MacVim,但是如果我將它加載到普通的vim中,它顯然不起作用(我換用閃光燈)。我希望能夠在我的所有系統上使用相同的vim配置,因此:.vimrc中的條件色彩格

有沒有辦法檢查調色板大小.vimrc並相應地設置兩個色彩格式中的一個?如果這不可行,那麼檢查MacVim vs. vim也是可以的。

回答

23

你有幾個選擇。

我認爲最好的方法是加載.vimrc一個色彩方案,以及另一個.gvimrc(或你的情況,只是不.vimrc載入色彩方案的話)。 .gvimrc colorscheme將僅在運行GUI版MacVim時加載。

如果你不想在多個文件分割配置,您還可以使用條件像這樣一個在.vimrc

if has('gui_running') 
    colorscheme mycrazycolors 
endif 

最後,如果你真的想知道的顏色數可用,您可以檢查t_Co設置:

:echo &t_Co 

t_Co是的MacVim的GUI版本空的,所以你可能仍然想使用has()技術的變化。事實上,默認.vimrc有類似的功能,以確定何時讓語法高亮:

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

爲了完整起見,我要指出,你也可以擴展你的色彩方案文件,包括彩色終端合理的設置。然而,這是相當多的工作,只是切換到支持更多顏色的終端應用程序可能更容易。

看到這些主題,詳細信息:

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

感謝這些,特別是'.gvimrc' - 我不知道這個存在。 – Amadan 2010-07-30 08:48:36

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在這裏試用,但我想這是準確的。

+2

供參考:'uname -s'打印出我的Mac上的'Darwin'。 – sdolan 2012-06-29 18:03:36