182 votes

Charger différentes couleurs lors de l'utilisation de vimdiff

Comment puis-je charger un schéma de couleurs différent quand je fais un vimdiff .

Je le souhaite car le schéma de couleurs actuel n’affiche pas correctement les différences dans vimdiff contrairement à la même couleur fg / bg pour le texte. Cela rend impossible de comprendre le diff. Donc, chaque fois que je fais un vimdiff je dois faire :colorscheme some_other_scheme

Cela peut-il être fait dans le fichier .vimrc ?

219voto

Dean Points 1778

Je ne sais pas pourquoi, vim utilise beaucoup de couleurs pour mettre en évidence, il n'a pas vraiment vous aider à comprendre ce qu'il se passe.

J'ai modifié mon colorscheme d'utiliser seulement une couleur de mise en surbrillance (avec un autre pour voir où il y a une différence au sein d'une ligne) et il a fait toute la différence.

Avant

enter image description here

Après

colorscheme_screenshot

Je l'ai fait par adjonction, à la fin de mon colorscheme fichier (~/.vim/colors/mycolorsheme).

highlight DiffAdd    cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffDelete cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffChange cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffText   cterm=bold ctermfg=10 ctermbg=88 gui=none guifg=bg guibg=Red
  • cterm - définit le style
  • ctermfg - définir la couleur du texte
  • ctermbg - définir la mise en évidence
  • DiffAdd - ligne a été ajoutée
  • DiffDelete - la ligne a été supprimée
  • DiffChange - une partie de la ligne a été changée (faits saillants de l'ensemble de la ligne)
  • DiffText - la part exacte de la ligne qui a changé

J'ai utilisé ce lien comme une référence pour les numéros de couleurs.

Note: je n'ai pas mis le gui options parce que je utiliser un autre colorscheme pour macvim/gvim

153voto

DataWraith Points 1939

Si vous appelez vimdiff à partir de la ligne de commande, placez le code suivant dans votre .vimrc:

if &diff
    colorscheme some_other_scheme
endif

Si vous utilisez vimdiff à partir de vim, vous feriez soit pour remplacer les commandes que vous utilisez pour démarrer/arrêter (par exemple, diffthis, diffoff) à l'aide d' :cnoreabbr (il y a aussi un plugin) ou l'utilisation d'un autocommand:

au FilterWritePre * if &diff | colorscheme xyz | endif

FilterWritePre est appelé avant de la filtrer à travers un programme externe (la diff utilité) et l' &diff-option est définie par vim quand il va dans diff-mode (entre autres, voir :help diff)

Je ne suis pas sûr autocommand à utiliser pour revenir à l'original colorscheme.

84voto

codeRain Points 1449

Pour répondre à ma propre question:

 if &diff
    colorscheme evening
endif
 

24voto

Alan Thompson Points 325

J'ai trouvé le moyen le plus simple était de coller ce one-liner dans mon fichier ~ / .vimrc:

 " Fix the difficult-to-read default setting for diff text highlighting.  The
" bang (!) is required since we are overwriting the DiffText setting. The highlighting
" for "Todo" also looks nice (yellow) if you don't like the "MatchParen" colors.
highlight! link DiffText MatchParen
 

8voto

Dmitry Ershov Points 1

/etc/vim/vimrc ou ~/.vimrc Si vous utilisez un fond sombre dans la zone d'édition et la coloration syntaxique en surbrillance, activez également cette option set background=dark

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X