Como personalizo as cores do vimdiff?

22

Estou tentando usar o vimdiff como minha ferramenta de mesclagem git, mas as cores usadas o tornam insuportável (pelo menos no Windows / Mingw): a cor do plano de fundo e a cor do primeiro plano são as mesmas para algumas das linhas conflitantes, tornando-o desnecessariamente difícil para descobrir o que está acontecendo (veja as linhas abaixo include=).

exemplo

oligofren
fonte

Respostas:

13

As cores são controladas por esses quatro grupos de destaque ( :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

Normalmente, eles são definidos por um esquema de cores , mas você pode personalizá-los no seu ~/.vimrc(após o :colorschemecomando) se desejar o esquema geral, mas não o destaque de diferenças. Apenas redefina usando :highlight. Aqui estão minhas personalizações pessoais (para o GVIM; para o terminal, você precisa dos ctermfg/bg=...atributos apropriados em vez / além):

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

Se você alternar os esquemas de cores rapidamente, precisará invocar novamente esses :hicomandos via:autocmd ColorScheme * hi ...

Ingo Karkat
fonte
11

Uma solução rápida é desativar o realce da sintaxe. Às vezes, o destaque da sintaxe do código faz com que o texto em primeiro plano tenha a mesma cor da cor de fundo do vimdiff, tornando o texto "invisível".

:syntax off

Se você deseja fazer isso automaticamente para o vimdiff, adicione-o ao final do seu ~/.vimrc:

if &diff
    syntax off
endif
wisbucky
fonte