Couleurs incorrectes avec vim dans iTerm2 en utilisant Solarized


84

J'ai un problème étrange avec iTerm2, dans le terminal vim (non-gui) et le jeu de couleurs solarisé. Tout d'abord, j'ai configuré iTerm2 pour utiliser le schéma de couleurs solarisé foncé.

J'utilise également solarized pour vim. J'ai les lignes suivantes dans mon .vimrc

set background=dark
colorscheme solarized

Dans le terminal, le jeu de couleurs semble incorrect: console vim

Pour référence, voici à quoi il ressemble sous MacVim (gui vim) gui vim

Que dois-je changer dans iTerm ou mon .vimrc pour obtenir les couleurs correctement dans ma console vim?

Réponses:


118

Quelques points à vérifier:

  1. Dans iTerm2, dans Préférences -> Profils -> Terminal, sous «Émulation de terminal», vous avez «Type de terminal de rapport:» réglé sur xterm-256color.

  2. Dans votre .vimrc, vous pouvez également définir certaines options pour vous assurer qu'il utilise 256 couleurs:

    set background=dark
    " solarized options 
    let g:solarized_visibility = "high"
    let g:solarized_contrast = "high"
    colorscheme solarized
    
    Et l'un de ceux-ci devrait fonctionner, mais le n ° 1 d'abord.

MAIS, si vous utilisez le vim par défaut intégré sur Snow Leopard, cela ne fonctionnera pas, car il n'est pas conçu avec la prise en charge de 256 couleurs. Je crois que la version intégrée de Lion le fait.

Edit: Sur la base de plusieurs commentaires sur cette réponse, j'ai supprimé la let g:solarized_termcolors = 256ligne de l' .vimrcexemple ci-dessus. Il semble que cela pourrait être un problème pour certains. Un autre dit que l'ajout de la ligne a let g:solarized_termcolors = 16résolu un problème d'affichage des couleurs. Votre propre kilométrage peut varier.

Deuxième édition: si vous avez chargé la palette de couleurs solarisée dans iTerm2, vous devez le faire let g:solarized_termcolors=16. Uniquement let g:solarized_termcolors=256si vous n'utilisez pas la palette solarisée comme préréglage de couleur iTerm2.


13
En fait, "let g: solarized_termcolors = 256" était la cause d'un affichage solarisé incorrect pour moi. Selon le référentiel git ( github.com/vim-scripts/Solarized ), "NOTE IMPORTANTE POUR LES UTILISATEURS DU TERMINAL:", vous devriez "laisser g: solarized_termcolors = 16".
Sai Perchard

3
Si vous utilisez la palette de couleurs solarisée avec votre terminal, les 16 couleurs ANSI seront définies sur les couleurs solarisées, auquel cas vous souhaitez définir let g:solarized_termcolors=16. Si vous utilisez 256, il sera proche, mais l'arrière-plan sera gris au lieu du bleu de la mer profonde.
Parker Selbert

2
Il semble que cela 256me donne le fond gris au lieu du bleu foncé sur Lion, mais cela 16ressemble exactement à l'omission de cette variable de mon vimrc. Eh bien, le gris foncé est meilleur qu'un gris vraiment clair que j'avais auparavant.
styfle

1
Le commentaire @SaiPerchard doit être ajouté à la réponse. Pour moi, c'est ce qui a corrigé la mauvaise couleur de fond.
Marten Sytema

1
Cela n'a pas fonctionné pour moi: stackoverflow.com/a/12969298/1945990 l'a fait. ITerm, thème solarisé plus thème solarisé vim.
Mike W

91

Les réponses ci-dessus n'ont pas fonctionné pour moi.

J'utilise iTerm2 avec vim 7.3 sur OS X 10.7.4.

Si les solutions ci-dessus n'ont pas fonctionné pour vous aussi, essayez ceci

syntax on
set background=dark
let g:solarized_termtrans = 1
colorscheme solarized

Mise à jour: Selon Jim Stewart, cela fonctionne aussi sur Kitty .


Pareil pour moi ici ... Merci pour cette solution!
freitass

2
J'utilise KiTTY (dérivé de PuTTY) sur Windows 7 et let g:solarized_termtrans = 1j'ai résolu un problème où la couleur d'arrière-plan sur les lignes vides était grise, mais la couleur d'arrière-plan sur les lignes avec du texte était noire après le contenu.
Jim Stewart

ils ne sont pas noirs thuogh :(
Setheron

Si vous utilisez un autre jeu de couleurs, vous pouvez hi Normal ctermbg=NONE, car c'est essentiellement ce que termtransfait Solarized (pour autant que je sache d'après leur source)
Achal Dave

1
C'est le plus proche du travail, il définit la couleur d'arrière-plan correctement, mais ma ligne de curseur, ma colonne de couleur et ma colonne de numéro de ligne ont toutes un arrière-plan noir. Pourquoi rien n'est jamais facile!
Ian Vaughan

13

https://github.com/altercation/solarized/tree/master/iterm2-colors-solarized

Téléchargez le package Solarized ( https://github.com/altercation/solarized ) et suivez les instructions:

Ouvrez iTerm 2, ouvrez Préférences, cliquez sur l'icône «Profils» (anciennement Adresses, anciennement Signets) dans la barre d'outils des préférences, puis sélectionnez l'onglet «Couleurs». Cliquez sur "charger les préréglages" et sélectionnez "importer ...". Sélectionnez le fichier de thème Solarized Light ou Dark.

Vous avez maintenant chargé les préréglages de couleurs Solarized dans iTerm 2, mais ne les avez pas encore appliqués. Pour les appliquer, il vous suffit de sélectionner un profil existant dans la fenêtre de liste de profils à gauche ou de créer un nouveau profil. Sélectionnez ensuite le préréglage Solarized Dark ou Solarized Light dans le menu déroulant "Load Presets".

=====================================

Ou:

cd ~/.vim/bundle
git clone git://github.com/altercation/vim-colors-solarized.git

Modifier .vimrc

Thème sombre:

syntax enable
set background=dark
colorscheme solarized

Lumière

syntax enable
set background=light
colorscheme solarized

2
Aucune des réponses précédentes ne résout mon problème, mais celle-ci le fait. Il s'avère que ce qui manquait pour moi, ce sont les préréglages de couleurs.
Sophia Feng

10

Cela a fonctionné pour moi dans OS X 10.9.1 dans iTerm 2 ainsi que dans Terminal. Une erreur que je faisais a été de mettre la déclaration de couleurs avant les paramètres termtrans et termcolors (et j'avais besoin des deux pour que cela fonctionne). Comme d'autres l'ont dit, j'ai défini mon type de terminal sur xterm-256color

if !has("gui_running")
    let g:solarized_termtrans=1
    let g:solarized_termcolors=256
endif

colorscheme solarized
set background=dark

7

J'ai lutté avec le même problème sur OSX 10.11.6, iTerm2 Build 3.0.12.

Voici ma solution pour cela.

  1. .vimrc

    syntaxe enable set background = dark colorscheme solarized

  2. Définissez le type de terminal de rapport sur xterm-256color.

entrez la description de l'image ici

  1. Définissez la couleur prédéfinie dans le profil sur Solarized Dark

entrez la description de l'image ici


Upvote parce que c'était l'indice dont j'avais besoin pour essayer différents préréglages de couleurs qui m'ont amené à découvrir que les codes d'échappement de couleur au-delà de 256 sont traités différemment sur mac vs Linux. Sur mac, les couleurs au-delà de 256 semblaient être modifiées puis aplaties à l'une des 8 couleurs ANSI sélectionnées, alors que sous Linux semble faire un module qui s'enroule et choisit une couleur.
Eric Leschinski

6

Du créateur: http://ethanschoonover.com/solarized/vim-colors-solarized

REMARQUE IMPORTANTE POUR LES UTILISATEURS DU TERMINAL:

Si vous envisagez d'utiliser Solarized en mode Terminal (c'est-à-dire pas dans une version GUI comme gvim ou macvim), veuillez envisager de configurer le schéma de couleurs de votre émulateur de terminal pour utiliser la palette Solarized. J'ai inclus des palettes pour certains émulateurs de terminaux populaires ainsi que Xdefaults dans le téléchargement officiel de Solarized disponible sur la page d'accueil de Solarized. Si vous utilisez Solarized sans ces couleurs, Solarized devra être informé de dégrader son colorimètre en un ensemble compatible avec la palette limitée de 256 terminaux (alors qu'en utilisant les 16 valeurs de couleur ansi du terminal, vous pouvez définir les valeurs spécifiques correctes pour Solarized palette).

Si vous utilisez les couleurs de terminal personnalisées, solarized.vim devrait fonctionner immédiatement pour vous. Si vous utilisez un émulateur de terminal prenant en charge 256 couleurs et que vous ne souhaitez pas utiliser les couleurs de terminal Solarized personnalisées, vous devrez utiliser le schéma de couleurs 256 dégradé. Pour ce faire, ajoutez simplement la ligne suivante avant la ligne solarisée colorschem:

let g:solarized_termcolors=256

Encore une fois, je vous recommande de changer simplement les couleurs de votre terminal en valeurs Solarized, soit manuellement, soit via l'un des nombreux schémas de terminaux disponibles pour l'importation.


C'était le seul moyen pour que iTerm2 utilise les couleurs solarisées dans MacVim non GUI.
Aaron Tribou

4

La réponse de Bill Turner fonctionne, mais il existe un moyen d'obtenir les couleurs correspondant exactement à MacVim. Solarized prend en charge spécifiquement iTerm2, entre autres émulateurs de terminaux.

  1. Aller à la page github iterm2-colors-solarized
  2. Suivez les instructions sous «Installation»
  3. Assurez-vous que votre .vimrc a la ligne colorscheme solarized

Cela devrait définir les couleurs vim dans iTerm2 pour qu'elles soient exactement telles qu'elles sont dans les éditeurs d'interface graphique.


Comme la réponse le suggère également, la réponse de Bill Turner est également correcte, mais CECI est la manière officielle (donc correcte) de définir le solarizedthème.
Can

1

Un moyen simple de résoudre ce problème est:

Dans les couleurs dir sur vim-color-solarized existe un arquive nommé 'solarozed.vim'

Ouvrez ce fichier et recherchez:
exe "let s: bg_back = '" .s: vmode. "Bg =". S: back. "'"

remplacer par:
exe "let s: bg_back = '" .s: vmode. "bg =". s: aucun. "'"


1

Pour tous les problèmes comme moi, j'avais installé le profil de couleur solarisé iterm2 . Installation de vim-color-solarized sur des bundles vim et le suivi des instructions étaient inutiles et incompatibles. Il y avait des problèmes de mise en évidence amusants comme dans la capture d'écran ci-dessus.

Leçon apprise: ne faites pas les deux.


0

J'ai essayé toutes les suggestions précédentes. Je viens d'ajouter set t_Co=256à .vimrc et cela a été corrigé. Je n'ai pas eu besoin de créer un tmuxalias ou de modifier mon fichier de configuration.


0

Aucune des réponses précédentes n'a fonctionné pour moi. Apparemment, je manquais:

set termguicolors
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.