답변:
vimdiff
명령 줄에서 전화 를 거는 경우 다음을 입력하십시오 .vimrc
.
if &diff
colorscheme some_other_scheme
endif
당신이 정력 내에서 vimdiff를 사용하는 경우, 당신이 중 하나를 시작하는 데 사용하는 명령을 무시해야 할 것 /을 (예 : 중지 diffthis
, diffoff
사용) :cnoreabbr
(A도있다 플러그인 ) 또는 자동 명령을 사용합니다 :
au FilterWritePre * if &diff | colorscheme xyz | endif
외부 프로그램 (diff 유틸리티)을 통해 필터링하기 전에 FilterWritePre가 호출되고 &diff
-옵션은 diff 모드로 들어갈 때 vim에 의해 설정됩니다 (다른 것들 중에서도 참조 :help diff
).
그래도 원래의 색상 구성표로 돌아 가기 위해 어떤 자동 명령을 사용해야하는지 잘 모르겠습니다.
;
쉘 스크립트에서 와 마찬가지로 개행을 대체하기 때문에 새로운 '라인'을 추가 할 수 있습니다.if &diff | colorscheme xyz | cmd2 | cmd3 | endif
colorscheme some_other_scheme
에 대한 런타임 경로를 살펴 봅니다 color/some_other_scheme.vim
. :set runtimepath?
vim 내에서 런타임 경로를 볼 수 있습니다 .
vim이 왜 많은 색상을 사용하여 강조 표시하는지 모르겠지만 실제로 무슨 일이 일어나고 있는지 알아내는 데 도움이되지 않습니다.
한 가지 색만 사용 하여 강조 표시하고 (한 줄에 차이가있는 위치를 표시하기 위해 다른 색을 사용하도록) 색 구성표를 수정 하여 모든 차이를 만들었습니다.
내 colorscheme 파일 ( ~/.vim/colors/mycolorscheme.vim
) 끝에 다음을 추가하여이 작업을 수행했습니다 .
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에 다른 색상 구성표를 사용하기 때문에 GUI 옵션을 설정하지 않았습니다
가장 쉬운 방법은이 한 줄짜리를 ~ / .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
Todo
대신 선택했습니다 MatchParen
.
읽을 수없는 색 구성표 (미운뿐만 아니라 분홍색 배경의 흰색 텍스트처럼 읽을 수 없음)가 발생하는 경우 256 색 대신 16 색을 사용하면 쉽게 해결할 수 있습니다. 그런 다음 색 구성표를 망칠 필요가 없습니다.
그 이유는 기본 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
t_Co
시키기 위해 8로 설정했습니다 set t_Co=256
.
몰로카이 : 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
매우 우수한 Solarized 테마 를 사용하는 사람들을 위해 diff 모드의 가시성을 높이는 옵션이 있습니다.
" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"
내 현재 colorscheme이 vimdiff에서 일부 diff를 올바르게 표시하지 않습니다. 예를 들어 일부 diff는 동일한 fg / bg 색상으로 표시됩니다
실제로, 나는 동일한 fg / bg 색상의 주범은 코드 구문 강조와 diff colorscheme 간의 충돌 때문이라는 것을 알았습니다. diff colorscheme을 변경하려고 시도 할 수 있지만 다른 파일 형식을 열 때 (다른 코드 구문 강조 표시) whack-a-mole 게임 일 수 있습니다.
확실한 해결책은 vimdiff에서 구문 강조를 비활성화하는 것입니다. 다음 중 하나를 입력 할 수 있습니다.
:syntax off
또는 매번 자동 으로이 작업을 수행하려면 다음 끝에 추가하십시오 ~/.vimrc
.
if &diff
syntax off
endif
또 다른 방법은 해당 색 구성표를 수정하는 것입니다.
내가 아는 한, 일반적으로 DiffAdd, DiffChange, DiffDelete 및 DiffText와 같이 확산과 관련하여 4 개의 강조 그룹이 있습니다. 구문에 대해 신경을 쓰지 않거나 원하는대로 색상을 조정하지 않으려면 다른 이름으로 기본 색상 구성표를 ~ / .vim / colors에 복사 할 수 있습니다 (없는 경우 디렉토리 생성). 대체 색상 구성표에서 새 사용자 정의 색상 구성표의 끝에 해당하는 : hi 명령을 복사하여 붙여넣고 옵션으로 다른 diff 관련 명령문을 주석 처리하십시오.
결과가 눈에 띄게 개선되면 색 구성표 관리자에게 변경 사항과 함께 전자 메일을 보내 문제를 조사하도록 요청하십시오. 관심을 가져 주셔서 감사하고 다른 사용자도 혜택을받을 수 있도록 색 구성표를 수정할 가능성이 큽니다.
/etc/vim/vimrc
또는 ~/.vimrc
: 편집 영역 내에서 어두운 배경을 사용하고 구문 강조를 사용하는 경우이 옵션도 켜십시오set background=dark
@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