vimdiff를 사용할 때 다른 색 구성표로드


137

할 때 다른 색 구성표를로드하는 방법 vimdiff.

내 현재의 색 구성표가에 약간의 차이를 표시하지 않기 때문에 이것을 원합니다 vimdiff. 예를 들어, 일부 diff는 동일한 fg / bg 색상으로 표시됩니다. 이것은 diff를 이해하기가 매우 어렵습니다. 그래서 내가 할 때마다 vimdiff해야 할 일:colorscheme some_other_scheme

.vimrc파일로 할 수 있습니까 ?

답변:


118

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).

그래도 원래의 색상 구성표로 돌아 가기 위해 어떤 자동 명령을 사용해야하는지 잘 모르겠습니다.


두 파이프 "|"사이에 둘 이상의 명령을 호출 할 수 있습니까? 나는 ... 너무 정력에서 vimdiff 사용 후 원래의 색상 구성표 복귀에 관심이있을 것이다
누군가는 여전히 당신에게 MS-DOS 사용

1
파이프는 ;쉘 스크립트에서 와 마찬가지로 개행을 대체하기 때문에 새로운 '라인'을 추가 할 수 있습니다.if &diff | colorscheme xyz | cmd2 | cmd3 | endif
DataWraith 2016 년

1
colorscheme some_other_scheme에 대한 런타임 경로를 살펴 봅니다 color/some_other_scheme.vim. :set runtimepath?vim 내에서 런타임 경로를 볼 수 있습니다 .
pabo

1
콘솔 사용자 (나 자신과 같은)에게 'vividchalk'는 최소한 셸 스크립트의 경우 강조 표시된 diff와 강조 표시된 구문 간의 대비를 유지하는 데 가장 적합한 색상 구성 (기본 설치 세트 중)입니다. 마지막 순간은 '저녁'이었습니다. 희망이 도움이됩니다.
콘래드 마이어

내 문제는 항상 구문 강조와 대비가 부족하여 diff 색상으로 전체 텍스트 덩어리를 잃어 버린다는 것입니다. '오프 구문'과거에 필요에 따라, 그러나 술어 지금 일부 키 입력을 저장 '및 DIFF 경우'그냥 내 .vimrc 파일에 추가 내가 사용
qneill

166

vim이 왜 많은 색상을 사용하여 강조 표시하는지 모르겠지만 실제로 무슨 일이 일어나고 있는지 알아내는 데 도움이되지 않습니다.

한 가지 색만 사용 하여 강조 표시하고 (한 줄에 차이가있는 위치를 표시하기 위해 다른 색을 사용하도록) 색 구성표를 수정 하여 모든 차이를 만들었습니다.

전에

여기에 이미지 설명을 입력하십시오

colorscheme_screenshot

내 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 옵션을 설정하지 않았습니다


1
감사! 이것은 훨씬 좋아 보인다!
vitaluha

4
pabo가 다른 의견에서 말했듯이, 색상 구성표 파일의 이름은 mycolorscheme.vim과 같이 끝에 .vim 확장자가 있어야합니다.
David Winiecki

감사! 미성년자 : 우연히 모든 "guibg"를 빨간색으로 만들었다 고 생각합니다. DiffText 색상과 나머지 색상의 두 가지 색상을 사용하려고 했습니까?
Kapil Arya

6
숫자 (ctermbg = 17)를 사용할 때 색상이 작동하지 않지만 단어 (ctermbg = blue)를 사용할 때 작동합니까? .. 해결책 : 맨끝에는 8 개의 색깔 만 있습니다 1-7
Ricky Levi

3
iTerm2를 사용하는 MacOS. 내가 무엇을하든, 나는 얻는다 : '~ / .vim / colors / mycolorscheme'색 구성표를 찾을 수 없음 ~ / .vimrc의 "if & diff"문 사이에 색 코드를 직접 복사하는 것이 속임수였다.
Tony Barganski


22

가장 쉬운 방법은이 한 줄짜리를 ~ / .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

3
훌륭한 솔루션! 더 눈에 띄기 때문에 Todo대신 선택했습니다 MatchParen.
Mihai Capotă

18

읽을 수없는 색 구성표 (미운뿐만 아니라 분홍색 배경의 흰색 텍스트처럼 읽을 수 없음)가 발생하는 경우 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

256 색 스크린 샷 여기에 이미지 설명을 입력하십시오

16 색 스크린 샷 여기에 이미지 설명을 입력하십시오

보시다시피 16 가지 색상은 색상 구성표를 변경하지 않고도 훨씬 읽기 쉽습니다.

이 영구적하려면, 당신은 추가 할 수 있습니다 set t_Co=16.vimrc


2
내 경우에는 다른 방식으로 진행되었지만이 팁에 감사드립니다. 가독성을 크게 향상 t_Co시키기 위해 8로 설정했습니다 set t_Co=256.
Olaf Dietsche

11

몰로카이 : 몰로카이 색 구성표 github : 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

이 오래된 문제에 대한 나의 새로운 마음에 드는 해결책!
Stabledog

10

매우 우수한 Solarized 테마 를 사용하는 사람들을 위해 diff 모드의 가시성을 높이는 옵션이 있습니다.

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

"표준" 여기에 이미지 설명을 입력하십시오

"높은" 여기에 이미지 설명을 입력하십시오

"낮은" 여기에 이미지 설명을 입력하십시오


1
이 차이의 스크린 샷이 나타나지 않습니까?
Victor Zamanian 2016 년

7

내 현재 colorscheme이 vimdiff에서 일부 diff를 올바르게 표시하지 않습니다. 예를 들어 일부 diff는 동일한 fg / bg 색상으로 표시됩니다

실제로, 나는 동일한 fg / bg 색상의 주범은 코드 구문 강조와 diff colorscheme 간의 충돌 때문이라는 것을 알았습니다. diff colorscheme을 변경하려고 시도 할 수 있지만 다른 파일 형식을 열 때 (다른 코드 구문 강조 표시) whack-a-mole 게임 일 수 있습니다.

확실한 해결책은 vimdiff에서 구문 강조를 비활성화하는 것입니다. 다음 중 하나를 입력 할 수 있습니다.

:syntax off

또는 매번 자동 으로이 작업을 수행하려면 다음 끝에 추가하십시오 ~/.vimrc.

if &diff
    syntax off
endif

6

또 다른 방법은 해당 색 구성표를 수정하는 것입니다.

내가 아는 한, 일반적으로 DiffAdd, DiffChange, DiffDelete 및 DiffText와 같이 확산과 관련하여 4 개의 강조 그룹이 있습니다. 구문에 대해 신경을 쓰지 않거나 원하는대로 색상을 조정하지 않으려면 다른 이름으로 기본 색상 구성표를 ~ / .vim / colors에 복사 할 수 있습니다 (없는 경우 디렉토리 생성). 대체 색상 구성표에서 새 사용자 정의 색상 구성표의 끝에 해당하는 : hi 명령을 복사하여 붙여넣고 옵션으로 다른 diff 관련 명령문을 주석 처리하십시오.

결과가 눈에 띄게 개선되면 색 구성표 관리자에게 변경 사항과 함께 전자 메일을 보내 문제를 조사하도록 요청하십시오. 관심을 가져 주셔서 감사하고 다른 사용자도 혜택을받을 수 있도록 색 구성표를 수정할 가능성이 큽니다.


vim 개발자들은 기본 색 구성표가 어두운 배경에 어떻게 나타나는지에 대한 수많은 불만과 제안을 받았지만 슬프게도 아직 해결되지 않았습니다.
Stefan Lasiewski 2016 년

6

/etc/vim/vimrc또는 ~/.vimrc: 편집 영역 내에서 어두운 배경을 사용하고 구문 강조를 사용하는 경우이 옵션도 켜십시오set background=dark


3

vim에서 vimdiff를 사용할 때 다음을 사용합니다.

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

else 문이있는 부분은 diff'ing을 마친 후 이전 구성으로 돌아가는 방식이므로 중요합니다. 따라서 각각의 명령을 대신 syntax off하여 바꿀 수 있습니다 . 이 autocmd는 vimdiff를 종료 할 때 설정 변경 및 되돌림을 처리합니다 ( 정확하게 사용 합니다).syntax oncolorschemeGdiff


3

@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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.