Comment personnaliser les couleurs vimdiff?

22

J'essaie d'utiliser vimdiff comme outil de fusion git, mais les couleurs utilisées le rendent insupportable (au moins sur Windows / Mingw): la couleur d'arrière-plan et la couleur de premier plan sont les mêmes pour certaines des lignes en conflit, ce qui la rend inutilement difficile pour comprendre ce qui se passe (voir les lignes ci-dessous contenant include=).

Exemple

oligofren
la source

Réponses:

13

Les couleurs sont contrôlées par ces quatre groupes de surbrillance ( :help hl-DiffAdd):

DiffAdd     diff mode: Added line
DiffChange  diff mode: Changed line
DiffDelete  diff mode: Deleted line
DiffText    diff mode: Changed text within a changed line

Ceux-ci sont généralement définis par un jeu de couleurs , mais vous pouvez les personnaliser dans votre ~/.vimrc(après la :colorschemecommande) si vous aimez le jeu dans son ensemble, mais pas sa mise en surbrillance. Redéfinissez simplement en utilisant :highlight. Voici mes personnalisations personnelles (pour GVIM; pour le terminal, vous avez besoin des ctermfg/bg=...attributs appropriés à la place / en plus):

hi DiffAdd      gui=none    guifg=NONE          guibg=#bada9f
hi DiffChange   gui=none    guifg=NONE          guibg=#e5d5ac
hi DiffDelete   gui=bold    guifg=#ff8080       guibg=#ffb0b0
hi DiffText     gui=none    guifg=NONE          guibg=#8cbee2

Si vous changez de thème de couleur à la volée, vous devez ré-invoquer ces :hicommandes via:autocmd ColorScheme * hi ...

Ingo Karkat
la source
11

Une solution rapide consiste à désactiver la mise en évidence de la syntaxe. Parfois, la mise en évidence de la syntaxe du code fait que le texte de premier plan est de la même couleur que la couleur d'arrière-plan vimdiff, ce qui rend le texte "invisible".

:syntax off

Si vous souhaitez le faire automatiquement pour vimdiff, ajoutez-le à la fin de votre ~/.vimrc:

if &diff
    syntax off
endif
wisbucky
la source