2010-07-30 7 views
15

J'utilise vim et MacVim. J'ai un colorcheme de 256 couleurs que j'aime pour MacVim, mais si je le charge en vim normal, ça ne marche évidemment pas (j'ai des blinkies à la place). Je voudrais être en mesure d'utiliser la même configuration vim sur tous mes systèmes, donc:Coloris conditionnel en .vimrc

Existe-t-il un moyen de vérifier la taille de la palette dans .vimrc et de définir l'un des deux styles de couleurs en conséquence? Si ce n'est pas faisable, alors vérifier pour MacVim vs vim serait également bien.

Répondre

23

Vous avez plusieurs options.

Je pense que votre meilleur pari est de charger un colorscheme dans .vimrc, et un autre dans .gvimrc (ou dans votre cas, ne chargez pas un colorscheme dans .vimrc du tout). Le .gvimrc colorscheme ne sera chargé que lorsque vous exécutez la version graphique de MacVim.

Si vous ne voulez pas partager votre configuration dans plusieurs fichiers, vous pouvez également utiliser un conditionnel comme celui-ci dans .vimrc:

if has('gui_running') 
    colorscheme mycrazycolors 
endif 

Enfin, si vous voulez vraiment connaître le nombre de couleurs disponible, vous pouvez vérifier le réglage t_Co:

:echo &t_Co 

t_Co est vide dans la version GUI de MacVim, de sorte que vous aurez probablement envie de continuer à utiliser une variante de la technique has(). En fait, la valeur par défaut .vimrc fait quelque chose de similaire pour déterminer quand pour permettre la mise en évidence de la syntaxe:

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

Par souci d'exhaustivité, je dois mentionner que vous pouvez également étendre votre fichier colorscheme pour inclure des paramètres raisonnables pour les terminaux de couleur. Toutefois, il s'agit d'une bonne quantité de travail et il peut être plus simple de passer à une application de terminal prenant en charge plus de couleurs.

Voir ces sujets pour plus d'informations:

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

Merci pour ceux-ci, en particulier pour '.gvimrc' - je ne savais pas qu'il en existait un. – Amadan

5

J'ai récemment fait quelque chose comme cela d'utiliser la même Vimrc sur tous nos systèmes Linux, mais utiliser la police à espacement fixe Ubuntu si je courais sur Ubuntu:

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

Il me semble que vous pourriez faire quelque chose de similaire pour détecter si vous utilisez un Mac ou autre:

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

Notez que j'ai utilisé http://en.wikipedia.org/wiki/Uname pour savoir ce que les rapports uname sur OS X. Je n'ai pas un Mac ici à portée de main pour l'essayer mais j'imagine que c'est précis.

+2

FYI: 'uname -s' affiche' Darwin' sur mon mac. – sdolan