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.
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.
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 "
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
):
Quand j'ai enlevé cette ligne de mon .bashrc
et ouvert un nouveau terminal (que exec bash
n'a pas fait)
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
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. . .
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:
Prise en charge 256 couleurs dans votre terminal - PuTTY avec les paramètres par défaut a cette
Vim doit reconnaître que le terminal est capable de 256 couleurs: "set t_Co = 256" dans votre .vimrc le fera
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.
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
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.
Utilisez cette règle si vous utilisez Vim viaSSH:
Ajoutez à votre .bashrc
local:
export TERM=xterm-256color
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'