2010-03-10 6 views
87

Vous pouvez mettre le schéma de couleurs Vim en émettantComment savoir qui ColorScheme une session Vim utilise actuellement

:colorscheme SCHEME_NAME 

mais, assez curieusement, vous ne pouvez pas obtenir le système actuellement utilisé par l'émission

:colorscheme 

comme résultat dans "E471: Argument required". Je ne vois pas non plus le schéma de couleurs répertorié dans la sortie de :set.

Alors, comment allez-vous déterminer le schéma de couleurs en cours d'utilisation (autre que de changer manuellement les thèmes jusqu'à ce que vous le reconnaissez)?

Répondre

125

Il n'y a aucun moyen garanti (comme un schéma de couleurs est essentiellement un chargement de commandes vim qui sont source). Cependant, par convention, il doit y avoir une variable g:colors_name définie avec le nom du schéma de couleurs.

Par conséquent, essayez ceci:

echo g:colors_name 

Si vous obtenez E121, il est soit un jeu de couleurs mal fait ou il est par défaut.

Une brillante façon de le faire est (pour les versions récentes de vim):

function! ShowColourSchemeName() 
    try 
     echo g:colors_name 
    catch /^Vim:E121/ 
     echo "default 
    endtry 
endfunction 

Ensuite, faites:

:call ShowColourSchemeName() 

S'il est dit "par défaut", faire :colorscheme default et voir si les couleurs changement. Si c'est le cas, vous utilisez un schéma de couleurs mal formé et vous ne pouvez pas faire grand-chose à part changer manuellement les thèmes jusqu'à ce que vous le reconnaissiez.

La g:colors_name variable est documentée here:

:help colorscheme 
+3

Fantastique, réponse complète. J'aimerais pouvoir voter deux fois. Merci. – gotgenes

+0

Est-ce que le guillemet fermant après '' default' est manquant? –

31

La meilleure option est d'utiliser :colo ou :colorscheme dans vim courant et le texte colorscheme réel est affiché. S'il vous plaît voir,

:help colorscheme 

pour plus de détails.

+1

Cela ne fonctionne pas pour moi, il dit 'default' et le schéma de couleurs que je reçois quand j'exécute': colo default' en est un autre. – daVe

0

Une version d'une ligne de la réponse de Dral:

let current_scheme = get(g:, 'colors_name', 'default') 

La fonction get() retombera à 'default' si la variable n'a pas encore été fixée.

Questions connexes