web-dev-qa-db-fra.com

vim colorschemes ne changeant pas la couleur de fond

J'essaie d'appliquer différents schémas de couleurs dans vim que j'ai vus sur le net. Quel que soit le schéma que je choisis, l’arrière-plan reste blanc, même si les captures d’écran du schéma appliqué montrent que l’arrière-plan doit être coloré.

Dans certains schémas, une partie de l'arrière-plan change de couleur, mais l'espace à droite des lignes contenant du texte reste toujours blanc.

J'utilise Vim 7.2 sur un mac. Je viens juste de commencer à jouer avec les applications non-gui, donc tout devrait être à peu près comme avant.

Les paramètres généraux de la fenêtre du terminal ont-ils quelque chose à voir avec cela?

Lorsque vous utilisez macvim, tout semble aller pour le mieux. Ce n'est que lorsque vous démarrez vim depuis le terminal que tout semble étrange.

33
Vegar

J'ai ceci dans mon .vimrc et il a résolu ce problème pour moi en utilisant tout en utilisant PuTTY.

set t_Co=256
set background=dark
colorscheme mustang
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE

Il est important de charger les couleurs avant les paramètres ctermbg dans .vimrc, car ils doivent remplacer les mêmes paramètres définis par les couleurs. Cela signifie également que vous ne pouvez pas changer de couleur lorsque Vim est en cours d'exécution et que vous vous attendez à ce qu'il fonctionne.

42
cptloop

J'ajoute une deuxième réponse de ma part car elle est très différente de ma première réponse et peut indiquer un problème réel.

Si vous regardez le site web actuel pour le code couleurs ici: Site web Molokai

vous verrez une question très semblable à la vôtre. Voici la réponse donnée, qui suggère d'essayer la commande :set t_Co=256 dans votre vimrc pour voir si elle résout le problème:

"- Assurez-vous que vous utilisez un terminal de console capable de 256 couleurs; ce n'est pas le cas de toutes (en particulier sur mac). Vous devrez peut-être explicitement forcer Vim à l'utiliser en faisant" set t_Co = 256 "sur votre fichier .vimrc .- La console Windows est bien… totalement non supportée, cela ne fait que 16 couleurs alors c'est un désordre "

28
Herbert Sitz

Sous Linux, j'avais export TERM=xterm-256color dans mon .bashrc. Cela a donné à vim l'apparence suivante (après avoir défini set t_Co=256):

Vim looks with molokai theme before fixing TERM variable

Quand j'ai enlevé cette ligne de mon .bashrc et ouvert un nouveau terminal (que exec bash n'a pas fait)

Vim looks with molokai theme after fixing TERM variable

13
DavidG

Les terminaux sont généralement limités à 256 couleurs tandis que les interfaces graphiques ne sont limitées que par la profondeur de couleur de votre environnement de bureau, généralement 2 ^ 32. 

Ainsi, même si de nombreux jeux de couleurs vim sont disponibles, ils sont implicitement souvent conçus pour l'interface graphique et ne fonctionnent pas pour la version du terminal. 

Si vous examinez les schémas de couleurs sur vim.org , il est souvent fait mention de GUI ou de 256. Vous devez donc choisir lequel utiliser en fonction du contexte.

Pour convertir un schéma d'interface graphique en terminal, vous pouvez utiliser le plug-in suivant: CSApprox .

Vous pouvez également utiliser un schéma de couleurs différent selon le contexte. Ajoutez ce qui suit dans votre fichier .vimrc: 

if has("gui_running")  
    colorscheme [using any color you want]  
else  
    colorscheme [using 256 colors]  
endif  
7
Xavier T.

Je pense que le problème pourrait être la façon dont la couleur par défaut est changée par le colorcheme. J'ai examiné certaines couleurs qui définissent les paramètres par défaut simplement:

set background=light

ou 

set background=dark

Je ne sais pas quelles sont les limites de celles-ci. Je ne pense pas que ceux-ci fonctionnent dans les terminaux.

Dans tous les cas, vous devriez pouvoir définir manuellement l'arrière-plan d'un terminal à l'aide de la surbrillance 'Normal'. Insérez-le à un emplacement avant la plupart des commandes "hi" dans le fichier colorscheme et il devrait fournir les valeurs par défaut avec lesquelles il travaillera. Par exemple:

hi Normal ctermbg=White ctermfg=Black guifg=Black guibg=White

Modifiez ctermfg (avant-plan du terminal de couleur) et ctermbg (arrière-plan du terminal de couleur) pour obtenir ce que vous voulez (ou la couleur que vous vous attendiez à voir dans le jeu de couleurs mais que vous ne voyez pas maintenant). (N'oubliez pas, cependant, si le paramètre colorscheme a déjà un réglage pour hi Normal, ce n'est probablement pas votre problème.)

Pour ctermbg et ctermfg, vous pouvez entrer des noms de couleurs, mais je pense qu’il n’ya qu’un nombre assez limité: Black DarkBlue DarkGreen DarkCyan DarkRed DarkMagenta Brown, DarkYellow LightGray, LightGrey, Grey, Grey, Grey, Dark Grey, Grey, Dark GreyGreen, LightGreen Cyan, LightCyanRouge, LightRed Magenta, LightMagenta Jaune, Jaune pâle Blanc

Sinon, vous devriez pouvoir utiliser un nombre compris entre 0 et 255 à la place du nom de la couleur. Ou ce script donne une idée approximative et vous permet de voir comment vous pouvez également utiliser davantage de noms de couleurs: Script Vim avec paramètres de couleur

En outre, il existe un certain nombre de scripts qui vous aident à utiliser ou à convertir les colorchemes écrites pour l'interface graphique à utiliser avec cterm. Par exemple.,:

Support Colorscheme pour cterm

Does the overall settings for the terminal window have something to do with it?

Peut-être, mais je suis à peu près sûr qu'un schéma de couleurs Vim correctement écrit aura priorité sur les paramètres de terminal que vous avez définis. Au moins, ils le font pour moi sous Windows et sur Ubuntu. . .

5
Herbert Sitz

J'ai eu le même problème et j'ai découvert que la réponse à cette question est en réalité triple, où ne corriger que deux des trois n'est pas suffisant. Vous aurez besoin d'avoir:

  1. Prise en charge 256 couleurs dans votre terminal - PuTTY avec les paramètres par défaut a cette

  2. Vim doit reconnaître que le terminal est capable de 256 couleurs: "set t_Co = 256" dans votre .vimrc le fera

  3. La palette de couleurs doit prendre en charge les terminaux de couleur avec les attributs ctermbg et ctermfg pour les tons clairs, pas seulement les versions gui *. http://www.vim.org/scripts/script.php?script_id=2682 devrait être en mesure de les fournir automatiquement, et CSApprox que j'utilise le plus certainement le fait, mais nécessite + gui -compiled Vim ou une version assez récente de Vim (7.3 ou plus récent).

Le troisième semble être l'exigence la plus manquée. J'ai écrit un court article sur mes propres manœuvres à ce sujet ce matin: http://codeandlife.com/2013/09/22/vim-colorschemes-with-PuTTY-aka-gui-vs-xterm-color256/

La dernière chose à laquelle je suis arrivé en essayant différents réglages est que, lorsque les couleurs fonctionnent, seules les zones de l’écran avec du texte ont la couleur de fond appropriée. Revérifier le réglage du terminal PuTTY "Utiliser la couleur d’arrière-plan pour effacer l’écran" a corrigé ce problème pour moi.

4
jokkebk

Les paramètres généraux de la fenêtre du terminal ont-ils quelque chose à voir avec cela?

Oui, les paramètres de terminal remplacent les paramètres de vim (au moins sous OSX et iTerm). Par exemple, j’ai un script suivant dans /Users/[nomutilisateurir//bashrc

setBackground() {  
  osascript -e "tell application \"iTerm\"  
    set current_terminal to (current terminal)  
    tell current_terminal  
      set current_session to (current session)  
      tell current_session  
        set background color to $1  
      end tell  
    end tell  
  end tell"  
}  

vim() {
       (setBackground "{65025,65025,65025}" &)
       (exec vim $*)
}

La commande ci-dessus remappe terminal vim pour exécuter un changement de couleur d'arrière-plan avant d'exécuter vim. La couleur de fond est applescript (j'ai copié le script quelque part ...). Cela fonctionne pour iTerm. Je crois que vous pouvez adapter cela pour fonctionner avec un terminal (produit Apple + script Apple -> devrait fonctionner).

br,
Juha

3
Juha

Cela fonctionne pour moi pour changer de fond d'écran:

colorscheme hemisu
function! g:ToggleBackground()
  if &background != 'dark'
    set background=dark
  else
    set background=light
    colorscheme hemisu
  endif
endfunction
nnoremap <silent> <F3> :call g:ToggleBackground()<CR>

Essayez également de définir un fond clair sur quelque chose comme ctermbg=231, afin que tmux le gère mieux.

0
vim4life

Utilisez cette règle si vous utilisez Vim viaSSH:

  1. Ajoutez à votre .bashrc local:

    export TERM=xterm-256color
    
  2. Supprimez de .bashrc les définitions TERM.

Si vous utilisez le même .bashrc sur les deux systèmes (local et distant), utilisez une variable d'environnement temporaire et never set TERM globalement:

alias color-ssh='TERM=xterm-256color ssh user@Host'
0
DenisKolodin