Je n'ai pas mis color xxx
dans mon .vimrc
. Donc, je le vois quand j’ouvre pour la première fois .vimrc
.
Puis je tape :color darcula
. Et cela change en ceci.
:color
me donne darcula
ici (naturellement).
Puis je tape :set background=dark
. Et cela change en ceci.
:color
me donne default
ici (étonnamment).
Donc ma question est, qu'est-ce que fait exactement :set background=dark
?
J'ai essayé :h background
et je n'ai rien trouvé d'utile. Je comprends que cette commande ne change pas le fond, seul vim changera les couleurs en conséquence. Mais je veux toujours poser cette question. Parce que je suis vraiment content de la couleur après :color darcula
et :set background=dark
que je me demande comment écrire mon propre jeu de couleurs sans avoir à mettre set background=dark
ma couleur .vimrc
.
J'ai suivi les conseils de @statox et mis set background=dark
à la dernière ligne de mon darcula.vim
. Puis color darcula
me donne la troisième capture d'écran. Cependant, lorsque je le mets à la première ligne, color darcula
me donne la deuxième capture d'écran. Le set bg=dark
change également à la troisième capture d'écran.
J'ai supposé, en le plaçant à la première ligne, que je dis à vim que ce schéma de couleurs est conçu pour un fond sombre. En le plaçant sur la dernière ligne, sur le contraste, je laisse vim supposer que cette palette de couleurs est conçue pour un arrière-plan clair, puis lui faire changer une partie d'elle-même (lors du traitement de la dernière ligne).
Si ce que je suppose qui est arrivé est vrai, ma question reste sans réponse. Qu'est-ce que vim a changé exactement quand j'utilise set bg=dark
APRÈS avoir chargé un schéma de couleurs claires?
L'ensemble de ma configuration vim est disponible à l' adresse https://github.com/MichaelMa2014/.vim.
la source
:set bg=light
et:set bg=dark
ne sont pas opposés, mais ce qu'ils sont exactement n'est pas expliqué. Aussi ce post est pourquoi je veux éviter:set background=dark
dans mon.vimrc
.Réponses:
Qu'est-ce qui se passe quand vous
:set background
Le mécanisme de base par lequel
:set background
fonctionne fonctionne est en fait assez simple, et il est documenté (bien que pas clairement) dans:help 'background'
.Donc, ce qui se passe réellement lorsque l'
'background'
option est modifiée est la suivante:Si aucun jeu de couleurs n'est actuellement chargé
Vim recharge les couleurs par défaut, en utilisant les couleurs de premier plan jugées appropriées pour le nouveau paramètre de
'background'
Si un jeu de couleurs est actuellement chargé
Vim recharge le jeu de couleurs. Lorsque le jeu de couleurs est chargé, le jeu de couleurs définit les couleurs appropriées au nouveau paramètre de
'background'
, ou le jeu de couleurs est réinitialisé'background'
à l'ancienne valeur.Comme vous l'avez déjà décrit, l'
'background'
option ne vise pas à définir l'arrière-plan, mais plutôt à indiquer à Vim si l'arrière-plan est sombre ou clair.Donc, si le jeu de couleurs est réinitialisé
'background'
, Vim considère que cela signifie que le jeu de couleurs ne prend tout simplement pas en charge le nouveau paramètre'background'
. Puisque l'utilisateur a indiqué qu'il utilise un tel arrière-plan, cela signifie que le jeu de couleurs actuel n'est plus approprié. Vim désactiveg:colors_name
puis recharge les couleurs par défaut.Si vous souhaitez explorer le code qui est exécuté quand
'background'
est défini, vous pouvez commencer ici .Que se passe-t-il dans votre installation?
Le comportement étrange que vous décrivez (dans la première version de votre question) peut être expliqué par cette ligne dans la documentation citée ci-dessus:
Le problème est que votre
colors/darcula.vim
fichier ne définit pas cette valeur et que, même si les couleurs ont changé lors de votre appel:color darcula
, Vim ne considère pas qu'un jeu de couleurs soit actuellement chargé.Par conséquent, lorsque vous appelez
:set background=dark
Vim, effectuez l'étape de la section "Si aucun jeu de couleurs n'est actuellement chargé" ci-dessus et définissez les couleurs par défaut pour un arrière-plan sombre. Ceci explique pourquoi:color
alors les rapportsdefault
.(Notez cependant que le réglage des couleurs par défaut ne supprime pas , comme on pouvait s'y attendre, toutes les couleurs précédemment définies. C'est pourquoi vous obtenez les résultats que vous voyez, plutôt que les couleurs affichées lorsque vous lancez Vim en premier lieu (il y a quelques discussions à ce sujet ici )
En bref, votre jeu de couleurs est mal configuré: Voir
:edit $VIMRUNTIME/colors/README.txt
(en particulier la section en bas) pour plus de détails à ce sujet, et sur l’interaction entre'background'
les jeux de couleurs.la source
Le document sur
:h 'background'
doit fournir toutes les informations dont vous avez besoin:Votre palette de couleurs définit 2 groupes de couleurs: celles utilisées sur un fond clair et celles utilisées sur un fond sombre. L'
background
option indiquera à vim quel groupe de couleurs défini par votre schéma de couleurs doit être utilisé.C’est la suite du paragraphe précédent: c’est la palette de couleurs qui définit les groupes de couleurs et
background
sélectionne l’un de ces groupes.Enfin , si vous voulez écrire votre propre schéma de couleurs sans avoir à mettre
set background=dark
dans votre vimrc, rappelez - vous qu'un colorscheme est rien de plus qu'un programme vimscript, donc rien ne vous empêche d'utiliser la commande directement dans le code de votre colorscheme comme par exemple jujubes ou apprentila source
set background=dark
endarcula.vim
et produit le même effet que quand je le mets dans.vimrc
. Mais je suis toujours curieux de savoir comment Vim "essaye exactement d'utiliser des couleurs qui vont bien sur un fond sombre"? Y at-il une cartographie ou quelque chose comme ça défini quelque part?