Загружать разные цвета при использовании vimdiff - PullRequest
119 голосов
/ 07 января 2010

Как загрузить другую цветовую схему при выполнении vimdiff.

Я хочу это, потому что моя текущая цветовая схема не показывает должным образом различия в vimdiff, For. например, некоторые различия отображаются с тем же цветом fg / bg. Это очень затрудняет понимание различий. Поэтому каждый раз, когда я делаю vimdiff, я должен делать :colorscheme some_other_scheme

Можно ли это сделать в .vimrc файле?

Ответы [ 12 ]

138 голосов
/ 19 июня 2013

Я не знаю, почему vim использует так много цветов для выделения, на самом деле это не поможет вам понять, что происходит.

Я изменил свою цветовую схему, чтобы использовать только один цвет, чтобы выделить (другой, чтобы показать, где есть разница в линии), и это имело все значение.

До

enter image description here

* После 1012 * colorscheme_screenshot Я сделал это, добавив следующее в конец моего файла цветов (~/.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 - устанавливает стиль ctermfg - установить цвет текста ctermbg - установить подсветку DiffAdd - добавлена ​​строка DiffDelete - линия была удалена DiffChange - часть строки была изменена (выделяет всю строку) DiffText - точная часть линии, которая изменилась Я использовал эту ссылку в качестве ссылки для цветовых чисел. Примечание: я не установил параметры графического интерфейса, потому что я использую другую цветовую схему для macvim / gvim

101 голосов
/ 07 января 2010

Если вы звоните vimdiff из командной строки, введите следующее в .vimrc:

if &diff
    colorscheme some_other_scheme
endif

Если вы используете vimdiff из vim, вам придется либо переопределить команды, которые вы используете для его запуска / остановки (например, diffthis, diffoff), используя :cnoreabbr (есть также подключаемый модуль ) или используйте автокоманду:

au FilterWritePre * if &diff | colorscheme xyz | endif

FilterWritePre вызывается перед фильтрацией через внешнюю программу (утилита diff), а опция &diff устанавливается vim при переходе в режим diff (среди прочего, см. :help diff)

Я не уверен, какую автокоманду использовать для возврата к исходной схеме цветов.

43 голосов
/ 07 января 2010

Чтобы ответить на мой вопрос:

if &diff
    colorscheme evening
endif
17 голосов
/ 14 ноября 2012

Я обнаружил, что проще всего вставить эту однострочную строку в мой файл ~ / .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
14 голосов
/ 28 февраля 2016

Если вы сталкиваетесь с нечитаемыми цветовыми схемами (не только некрасивыми, но и нечитаемыми, как белый текст на розовом фоне), можно легко исправить использование 16 цветов вместо 256 цветов. Тогда вам не нужно связываться с цветовыми схемами.

Причина в том, что цветовая схема vimdiff по умолчанию назначает DiffChange bg как "LightMagenta", который отображается на очень светло-розовый в 256 цветах. Это нечитаемо с белым текстом. С 16 цветами, LightMagenta отображается на ярко-пурпурный, на котором белый текст выглядит намного лучше.

Вы можете сделать быстрый тест, выполнив что-то вроде этого:

vimdiff <file1> <file2>
:set t_Co?    " print current setting (256 by default)
:highlight    " print highlighting scheme
:set t_Co=16  " set to 16 colors
:highlight    " print highlighting scheme

256-цветный скриншот enter image description here

16-цветной скриншот enter image description here

Как видите, 16 цветов гораздо удобнее для чтения без изменения цветовой схемы.

Чтобы сделать этот перманент, вы можете добавить set t_Co=16 к вашему .vimrc

9 голосов
/ 13 июля 2015

Для людей, которые используют отличную тему Solarized , есть опция, включающая высокую видимость для режима diff:

" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"

"нормальный" enter image description here

"высокий" enter image description here

"низкий" enter image description here

5 голосов
/ 07 июня 2014

/etc/vim/vimrc или ~/.vimrc: Если вы используете темный фон в области редактирования и подсветку синтаксиса, включите и эту опцию set background=dark

5 голосов
/ 21 июля 2012

Другой подход заключается в исправлении этой цветовой схемы.

Насколько я знаю, обычно есть четыре группы подсветки относительно diff'ing: DiffAdd, DiffChange, DiffDelete и DiffText. Если вы не хотите беспокоиться о синтаксисе или настройке цветов по своему вкусу, вы можете скопировать цветовую схему по умолчанию под другим именем в ~ / .vim / colors (создайте каталог, если он не существует) и скопируйте и вставьте соответствующие команды: hi из вашей альтернативной цветовой схемы в конец вашей новой пользовательской цветовой схемы, при желании закомментировав любые другие операторы, связанные с diff.

А если результат очевиден, отправьте электронное письмо автору вашей цветовой схемы с вашими изменениями и попросите его разобраться в проблеме. Есть большая вероятность, что он поблагодарит вас за проявленный интерес и исправит свою цветовую схему, чтобы другие пользователи также выиграли ..

4 голосов
/ 03 ноября 2018

Молокаи: molokai color scheme GitHub: github color scheme Две темы, github и molokai, одинаково прекрасны.

curl -fLo ~/.vim/colors/molokai.vim --create-dirs https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim
curl -fLo ~/.vim/colors/github.vim --create-dirs https://raw.githubusercontent.com/endel/vim-github-colorscheme/master/colors/github.vim

Поместите следующий код в ~ / .vimrc, вы можете выбрать github или molokai (строка, начинающаяся с "- это комментарий):

if &diff
"   colorscheme github
    colorscheme molokai
endif
3 голосов
/ 16 августа 2016

Я использую следующее при использовании vimdiff из vim:

au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif

Часть с оператором else важна, потому что именно так вы вернетесь к предыдущей конфигурации после того, как закончите diff'ing. Таким образом, вы можете заменить syntax off и syntax on соответствующими командами colorscheme. Этот autocmd обрабатывает изменение настроек и их возврат при выходе из vimdiff (я использую Gdiff, если быть точным).

...