Загрузка различных colorscheme при использовании vimdiff
как загрузить другую colorscheme при выполнении vimdiff
.
Я хочу этого, потому что моя текущая colorscheme не показывает некоторые различия должным образом в vimdiff
, For. например, некоторые различия показаны с тем же цветом fg/bg. Из-за этого очень трудно понять разницу. Поэтому каждый раз, когда я делаю vimdiff
Мне нужно :colorscheme some_other_scheme
Это можно сделать в ?
10 ответов
если вы звоните vimdiff
из командной строки введите в свой .vimrc
:
if &diff
colorscheme some_other_scheme
endif
если вы используете vimdiff из vim, вам придется либо переопределить команды, которые вы используете для запуска / остановки (например,diffthis
, diffoff
) через :cnoreabbr
(там же плагин) или используйте autocommand:
au FilterWritePre * if &diff | colorscheme xyz | endif
FilterWritePre вызывается перед фильтрацией через внешнюю программу (утилита diff) и &diff
-возможность устанавливается vim, когда он переходит в режим diff (среди прочего, см. :help diff
)
Я не уверен, какую автокоманду использовать для возврата к исходной colorscheme.
Я не знаю, почему vim использует так много цветов, чтобы выделить, это действительно не поможет вам понять, что происходит.
Я изменил свою 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, потому что я использую другую colorscheme для macvim/gvim
Я нашел самый простой способ вставить этот однострочный в мой~/.файл 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
для людей, которые используют очень отлично Solarized тема есть опция, которая включает высокую видимость для режима diff:
" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"
если вы столкнулись с нечитаемыми цветовыми схемами (не только уродливые, но нечитаемые, как белый текст на розовом фоне), простое исправление может быть использовать 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
как вы можете видеть, 16 цветов гораздо более читабельны, без изменения цветовой схемы.
сделать это постоянным, вы можете добавить set t_Co=16
на .vimrc
другой подход-исправить эту цветовую схему.
насколько я знаю, обычно существует четыре группы выделения относительно diff'ING: DiffAdd, DiffChange, DiffDelete и DiffText. Если вы не хотите беспокоиться о синтаксисе или настройке цветов по своему вкусу, вы можете скопировать цветовую схему по умолчанию под другим именем в ~/.vim / colors (создайте каталог, если он не существует) и скопируйте соответствующую команду: hi из вашего альтернативного цвета схема до конца вашей новой пользовательской цветовой схемы, опционально комментируя любые другие связанные с различиями утверждения в ней.
и если результат является очевидным улучшением, отправьте электронное письмо сопровождающему вашей цветовой схемы с вашими изменениями и попросите его изучить проблему. Есть хороший шанс, что он поблагодарит вас за интерес и что он исправит свою цветовую схему, чтобы другие пользователи также выиграли..
/etc/vim/vimrc
или ~/.vimrc
:
При использовании темного фона в области редактирования и подсветки синтаксиса включите эту опцию также set background=dark
я использую следующее При использовании vimdiff из vim:
au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif
часть с оператором else важна, потому что именно так вы возвращаетесь к своей предыдущей конфигурации после того, как закончите с diff'ING. Таким образом, вы можете заменить syntax off
и syntax on
с соответствующими colorscheme
команды. Эта программа autocmd обрабатывает изменение параметра и его возврат при выходе из vimdiff (я использую Gdiff
чтобы быть точным).
моя текущая colorscheme не показывает некоторые различия должным образом в vimdiff, для. например, некоторые различия показаны с тем же цветом FG / bg
на самом деле, я обнаружил, что главный виновник того же цвета fg/bg из-за конфликта между подсветкой синтаксиса кода и diff colorscheme. Вы можете попытаться изменить diff colorscheme, но это может быть игра whack-a-mole при открытии разных типов файлов (с разной подсветкой синтаксиса кода).
верное решение чтобы отключить подсветку синтаксиса в vimdiff. Вы можете либо ввести:
:syntax off
или если вы хотите автоматически делать это каждый раз, то добавьте это в конец ~/.vimrc
:
if &diff
syntax off
endif