web-dev-qa-db-fra.com

Comment identifier les couleurs utilisées par une session Vim

Vous pouvez définir le jeu de couleurs Vim en émettant

:colorscheme SCHEME_NAME

mais curieusement, vous ne pouvez pas obtenir le schéma actuellement utilisé en émettant

:colorscheme

car cela donne "E471: Argument required". Je ne vois pas non plus le jeu de couleurs indiqué dans la sortie de :set.

Alors, comment allez-vous déterminer le jeu de couleurs actuel (autrement que de changer manuellement de thème jusqu'à ce que vous le reconnaissiez)?

91
gotgenes

Il n'y a pas de moyen garanti (comme un jeu de couleurs est essentiellement un chargement de commandes vim qui sont générés). Cependant, par convention, il devrait exister une variable g:colors_name définie sur le nom du jeu de couleurs.

Par conséquent, essayez ceci:

echo g:colors_name

Si vous obtenez le E121, il s’agit d’un jeu de couleurs mal fait ou du jeu de couleurs par défaut.

Une manière plus brillante 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

Alors fais:

:call ShowColourSchemeName()

Si cela indique "par défaut", faites :colorscheme default et voyez si les couleurs changent. S'ils le font, vous utilisez un jeu de couleurs mal formé et vous ne pouvez rien y faire à part changer de thème manuellement jusqu'à ce que vous le reconnaissiez.

La variable g:colors_name est documentée ici :

:help colorscheme
135
DrAl

La meilleure option consiste à utiliser :colo ou :colorscheme dans vim actuel et le texte du schéma de couleurs réel est affiché. S'il te plait regarde,

:help colorscheme 

pour plus de détails. 

33
Gattoo

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

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

La fonction get() va revenir à 'default' si la variable n'a pas encore été définie.

0
joeytwiddle