2010-07-30 14 views
15

Sto usando vim e MacVim. Ho un colore a 256 colori che mi piace per il mio MacVim, ma se lo carico in vim regolare, ovviamente non funziona (ho invece dei blinkies). Mi piacerebbe essere in grado di utilizzare la stessa vim config su tutti i miei sistemi, quindi:Combinazioni colori condizionali in .vimrc

C'è un modo per verificare la dimensione della tavolozza in .vimrc e impostare uno dei due colori di conseguenza? Se ciò non è fattibile, anche il controllo per MacVim vs vim andrebbe bene.

risposta

23

Hai diverse opzioni.

Penso che la soluzione migliore è caricare un piano di colori in .vimrc e un altro in .gvimrc (o nel tuo caso, non caricare affatto un piano di colori in .vimrc). Il colore .gvimrc verrà caricato solo quando si esegue la versione della GUI di MacVim.

Se non si desidera dividere la configurazione in più file, è possibile utilizzare anche un condizionale come questo in .vimrc:

if has('gui_running') 
    colorscheme mycrazycolors 
endif 

Infine, se davvero si vuole conoscere il numero di colori disponibili, è possibile controllare l'impostazione t_Co:

:echo &t_Co 

t_Co è vuoto nella versione GUI di MacVim, per cui è probabile ancora voglia di utilizzare una variante della tecnica has(). Infatti, il valore predefinito .vimrc fa qualcosa di simile per determinare quando attivare l'evidenziazione della sintassi:

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

Per ragioni di completezza, vorrei ricordare che si potrebbe anche ampliare il file colorscheme per includere le impostazioni ragionevoli per terminali a colori. Questa è una buona quantità di lavoro, tuttavia, e potrebbe essere più semplice passare a un'applicazione terminale che supporti più colori.

vedere gli argomenti per ulteriori informazioni:

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

Grazie per questi, in particolare per '.gvimrc' - non sapevo che esistesse. – Amadan

5

Recentemente ho fatto qualcosa di simile per utilizzare la stessa .vimrc su tutti i nostri sistemi Linux, ma utilizzare il font a spaziatura fissa Ubuntu se stavo correndo su Ubuntu:

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

mi sembra che si potrebbe fare qualcosa di simile per rilevare se si esegue su un Mac o in altro modo:

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

Nota che ho usato http://en.wikipedia.org/wiki/Uname per scoprire quali report uname su OS X. Non ho un Mac qui a portata di mano per provarlo, ma immagino che sia accurato.

+2

FYI: 'uname -s' stampa' Darwin' sul mio mac. – sdolan