Как мне настроить цвета vimdiff?

22

Я пытаюсь использовать vimdiff в качестве инструмента git merge, но используемые цвета делают его невыносимым (по крайней мере, в Windows / Mingw): цвет фона и цвет переднего плана одинаков для некоторых конфликтующих линий, что делает его излишне трудным чтобы выяснить, что происходит (см. строки ниже, содержащие include=).

пример

oligofren
источник

Ответы:

13

Цвета контролируются этими четырьмя группами подсветки ( :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

Они обычно определяются цветовой схемой , но вы можете настроить их в своей ~/.vimrc(после :colorschemeкоманды), если вам нравится общая схема, а не ее подсветка различий. Просто переопределите использование :highlight. Вот мои личные настройки (для GVIM; для терминала вам нужны ctermfg/bg=.../ дополнительно соответствующие атрибуты):

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

Если вы переключаете цветовые схемы на лету, вам нужно повторно вызывать эти :hiкоманды через:autocmd ColorScheme * hi ...

Инго Каркат
источник
11

Одним из быстрых решений является отключение подсветки синтаксиса. Иногда выделение синтаксиса кода приводит к тому, что текст переднего плана будет того же цвета, что и цвет фона vimdiff, делая текст «невидимым».

:syntax off

Если вы хотите автоматически сделать это для vimdiff, то добавьте это в конец вашего ~/.vimrc:

if &diff
    syntax off
endif
wisbucky
источник