Comment savoir quel schéma de couleurs une session Vim utilise actuellement

107

Vous pouvez définir le schéma 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 se traduit par " E471: Argument required". Je ne vois pas non plus le jeu de couleurs répertorié dans la sortie de :set.

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

gotgenes
la source

Réponses:

159

Il n'y a pas de moyen garanti (car un jeu de couleurs est essentiellement une charge de commandes vim qui proviennent). Cependant, par convention, une variable doit être g:colors_namedéfinie sur le nom du jeu de couleurs.

Par conséquent, essayez ceci:

echo g:colors_name

Si vous obtenez E121, c'est soit un jeu de couleurs mal conçu, soit celui par défaut.

Une façon 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()

S'il dit "par défaut", faites :colorscheme defaultet voyez si les couleurs changent. Si c'est le cas, vous utilisez un jeu de couleurs mal formé et vous ne pouvez pas faire grand chose à part changer manuellement de thème jusqu'à ce que vous le reconnaissiez.

La variable g:colors_nameest documentée ici :

:help colorscheme
DrAl
la source
Le guillemet double de clôture est-il "defaultmanquant?
Benjamin W.
38

La meilleure option est d'utiliser :coloou :colorschemedans la vim actuelle et le texte du schéma de couleurs réel s'affiche. S'il te plait regarde,

:help colorscheme 

pour plus de détails.

Gattoo
la source
3
Cela ne fonctionne pas pour moi. Il dit default. Et la palette de couleurs que j'obtiens lorsque j'exécute :colo defaulten est une autre.
daVe
4

Une version en une ligne de la réponse de DrAl:

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

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

joeytwiddle
la source