Vim은 시작할 때 vimrc를 한 번 읽습니다. if &diff
가마다의 상태하지 읽을 때 문이 실행됩니다 'diff'
변경. 실행할 때 해당 색상 명령을 실행하는 한 가지 방법 :VCSVimDiff
은 vimrc의 자동 명령에 다음과 같이 입력하는 것입니다.
au FilterWritePre * if &diff | set t_Co=256 | set bg=dark | colorscheme peaksea | endif
여기서 FilterWritePre
이벤트는 Vim이 diff를 수행 할 때 트리거 되는 이벤트입니다.
[댓글이 제대로 작동하지 않으므로 원래 답변에 추가하겠습니다.]
VimDiff를 끝내려면 이벤트를 :q
사용하고 다른 색상 명령을 BufWinLeave
다시 테스트 &diff
하고 실행 하여 다른 자동 명령을 설정하면됩니다.
내가하는 일은 다음 명령을 사용하여 diff'd했던 버퍼를 삭제하고 diff 모드를 끄고 저장된 설정을 복원하는 것입니다.
command! -bar -bang Nodiff wincmd l <bar> only<bang> <bar> set nodiff noscrollbind scrollopt-=hor wrap foldcolumn=0 virtualedit= foldlevel=99 <bar> if exists("b:fdm") <bar> let &fdm = b:fdm <bar> endif <bar> if exists("b:syn") <bar> let &syn = b:syn <bar> endif
diff 모드로 들어갈 때 이러한 설정을 만들고 저장하려면 다음 자동 명령을 사용합니다.
au FilterWritePre * if &diff | set virtualedit=all | endif
au FilterWritePre * exe 'let b:syn = &syn | if &diff | set syn=OFF | endif'
au BufWinEnter * if &fdm != "diff" | let b:fdm = &fdm | endif
이러한 명령은 수년에 걸쳐 발전해 왔으며, 이것이 불일치에 대한 변명입니다.