Загрузите другую цветовую схему при использовании vimdiff
Как загрузить другую цветовую схему при выполнении vimdiff
.
Я хочу это, потому что моя текущая цветовая схема не показывает некоторые различия в vimdiff
, For. например, некоторый diff показан с тем же цветом fg/bg. Это затрудняет понимание различий. Поэтому каждый раз, когда я делаю vimdiff
, я должен делать :colorscheme some_other_scheme
Можно ли это сделать в файле .vimrc
?
Ответы
Ответ 1
Если вы вызываете vimdiff
из командной строки, поместите следующее в .vimrc
:
if &diff
colorscheme some_other_scheme
endif
Если вы используете vimdiff изнутри vim, вам придется либо переопределить команды, которые вы используете для запуска/остановки (например, diffthis
, diffoff
), используя :cnoreabbr
(там также плагин) или используйте автокоманду:
au FilterWritePre * if &diff | colorscheme xyz | endif
FilterWritePre вызывается перед фильтрацией через внешнюю программу (утилиту diff) и &diff
-option устанавливается vim при переходе в diff-режим (среди прочего, см. :help diff
)
Я не уверен, какую автокоманду использовать для возврата к исходной схеме цветов.
Ответ 2
Я не знаю, почему vim использует так много цветов, чтобы подчеркнуть, это не поможет вам понять, что происходит.
Я изменил мою цветовую схему, чтобы использовать только один цвет, чтобы выделить (с другой, чтобы показать, где находится разница в пределах строки), и это сделало все возможное.
Перед
![enter image description here]()
После
![colorscheme_screenshot]()
Я сделал это, добавив следующее в конец моего файла colorscheme (~/.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
- точная часть строки, которая изменила
Я использовал эту ссылку в качестве ссылки для номеров цветов.
Примечание. Я не задал параметры gui, потому что я использую другую цветовую схему для macvim/gvim
Ответ 3
Чтобы ответить на мой собственный вопрос:
if &diff
colorscheme evening
endif
Ответ 4
Я нашел, что самый простой способ - вставить этот однострочный вкладыш в файл ~/.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
Ответ 5
Если вы сталкиваетесь с нечитаемыми цветовыми схемами (не только некрасивыми, но и нечитаемыми, как белый текст на розовом фоне), можно легко исправить использование 16 цветов вместо 256 цветов. Тогда вам не нужно связываться с цветовыми схемами.
Причина заключается в том, что цветовая схема DiffChange bg
по умолчанию назначает 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
Ответ 6
Для людей, которые используют очень отличную Solarized, есть опция, которая обеспечивает высокую видимость для diff:
" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"
"нормальный"
![введите описание изображения здесь]()
"высокий"
![введите описание изображения здесь]()
"низкий"
![введите описание изображения здесь]()
Ответ 7
Другой подход - исправить эту цветовую схему.
Насколько я знаю, обычно есть четыре группы подсветки по сравнению с diff'ing: DiffAdd, DiffChange, DiffDelete и DiffText. Если вы не хотите беспокоиться о синтаксисе или настраивать цвета по своему вкусу, возможно, вы можете скопировать цветовую схему по умолчанию под другим именем в ~/.vim/colors (создать каталог, если он не существует) и скопируйте вставьте соответствующие команды: hi из вашей альтернативной цветовой схемы в конец вашей новой настраиваемой цветовой схемы, необязательно комментируя любые другие связанные с ней утверждения.
И если результат является очевидным улучшением, отправьте электронное письмо сопровождающей вашей цветовой гамме с вашими изменениями и попросите его изучить проблему. Там есть хорошая вероятность, что он поблагодарит вас за ваш интерес и что он исправит свою цветовую схему, чтобы другие пользователи также выиграли.
Ответ 8
/etc/vim/vimrc
или ~/.vimrc
:
Если использование темного фона в области редактирования и подсветка синтаксиса включите эту опцию также set background=dark
Ответ 9
molokai:
github:
Две темы 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
Ответ 10
При использовании vimdiff из vim я использую следующее:
au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif
Часть с инструкцией else важна, потому что, как вы вернетесь к своей предыдущей конфигурации после того, как вы закончите с diff'ing. Поэтому вы можете заменить syntax off
и syntax on
соответствующими командами colorscheme
. Этот autocmd обрабатывает изменение настроек и возврат его при выходе из vimdiff (я использую Gdiff
, чтобы быть точным).
Ответ 11
моя текущая цветовая схема не показывает должным образом различия в vimdiff, For. например, некоторые различия отображаются с тем же цветом fg/bg
На самом деле, я обнаружил, что основной виновник того же цвета fg/bg - из-за конфликта между подсветкой синтаксиса кода и diffchechecheche. Вы можете попытаться изменить цветовую схему различий, но это может быть игра в прятки, когда вы открываете файлы разных типов (с разной подсветкой синтаксиса кода).
Верным решением является отключение подсветки синтаксиса в vimdiff. Вы можете ввести:
:syntax off
Или, если вы хотите автоматически делать это каждый раз, добавьте это в конец вашего ~/.vimrc
:
if &diff
syntax off
endif
Ответ 12
Чтобы расширить @dean и некоторые другие ответы здесь, добавьте это в ваш .vimrc
:
if &diff
" colorscheme evening
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
endif