git
가 3 방향 병합을 수행하고 충돌이있는 경우 해결할 수 없습니다. 파일의 해당 영역을 다음과 같이 표시합니다.
No unresolvable conflicts here <<<<<<< HEAD xyz ||||||| parent of ... abc ======= 123 >>>>>>> ...
변경할 방법 (그리고 그렇다면 어떻게)이 있습니까? 이 세 “섹션”의 배경색 :
-
<<<<<<< HEAD
||||||| parent of ...
-
||||||| parent of ...
=======
- 줄
>>>>>>> ...
(편집 : 다른 질문에 따라 특정 줄을 강조 할 수있는 방법이있는 경우 질문이 회전합니다. xyz
는 일반적으로 강조 표시되지 않지만 <<<<<<<
와 |||||||
강조 표시됩니다.)
다른 충돌 마커 세트도 처리 할 수 있습니까?
댓글 작성 당시 사용 가능한 최신 버전의 vim 사용. 그래서 지금은 8.1.1183입니다.
저는 단말기에 검은 색 배경과 256 색을 사용합니다. 가장 어두운 R / G / B / C / M / Y 색상을 사용하여이 섹션을 제공하는 것이 좋을 것이라고 생각했기 때문에 구문 강조에 많은 문제를 일으키지 않았습니다. (ANSI 색상 52, 22, 17, 23, 53, 58-1-6 색이 아닙니다.)
댓글
Answer
Vim 구성에서 다음을 수행 할 수 있습니다 ( 원하는 색상 및 스타일) :
function! ConflictsHighlight() abort syn region conflictStart start=/^<<<<<<< .*$/ end=/^\ze\(=======$\||||||||\)/ syn region conflictMiddle start=/^||||||| .*$/ end=/^\ze=======$/ syn region conflictEnd start=/^\(=======$\||||||| |\)/ end=/^>>>>>>> .*$/ highlight conflictStart ctermbg=red ctermfg=black highlight conflictMiddle ctermbg=blue ctermfg=black highlight conflictEnd ctermbg=green cterm=bold ctermfg=black endfunction augroup MyColors autocmd! autocmd BufEnter * call ConflictsHighlight() augroup END
다음과 같이 렌더링 :
당신이 추구하는 것이 무엇입니까?
댓글
- 그 '는 절대적으로 제가 ' m을 추구합니다. 저는 '하지만 vimscript에 약간의 이상한 점이 있습니다. 예제를 입력하면 게시 한 이미지와 똑같습니다. 예제를 저장하고 새 파일을 편집하는 vim을 다시 시작하면 끔찍하게 엉망이됩니다. (vim 8.1.1186.) 더 이상하게도, 이상하게 보이는 기존 파일의 모든 줄을 삭제하고 내용을 다시 붙여 넣으면 ' 여전히 잘못 표시됩니다. i.ibb.co/jvGMH6t/wtfvim.jpg
- 실제 병합 시나리오에서 사용하면 이미지 I보다 더 이상한 색상이 트리거됩니다. 링크 됨 :
conflictStart
가 올바르게 강조 표시됨;conflictMiddle
의|||||||
부분은 빨간색으로 표시되지만 나머지 줄은 파란색으로 표시됩니다. 빨간색의=======
; 노란색의>>>>>>> .*
줄 (노란색이 여기에 들어온 곳, 노란색이 없음); 그리고 ' 충돌의 일부가되어서는 안되는 나머지 파일은 녹색으로 표시되지만 여전히conflictEnd
에 따라 선택됩니다. stackoverflow.com/questions/30247603 의SynStack()
함수 - 마찬가지로 실제 병합 시나리오에서 내용을 새 파일에 복사 / 붙여 넣기하면 예상대로 표시되지만 ' 저장되고 vim이 다시 시작 되 자마자 잘못 표시됩니다.
- 실제 병합 시나리오에서는
:diffoff
를 사용하여 원래 diff 색상을 사용하지 않도록 설정하고 ' 파일 유형 만 남길 수 있습니다. 구문 강조. 첫 번째 경우를 확인하기 위해 약간 재생하겠습니다. - 죄송합니다. 글을 게시하기 전에 conflict_marker 플러그인을 설치 한 상태로 두었다는 사실을 잊었습니다. 충돌이 발생하여 문제가 발생했습니다. 이를 제거하면 더 이상 문제가 발생하지 않습니다.
답변
- conflict-marker.vim 은 마커 자체를 강조 표시 할 수 있습니다. 또한 점프와이를 해결하는 방법도 제공합니다.
- 내 자신의 ConflictDetection 플러그인 은 구문 강조 표시를 통해 전체 섹션을 감지하고 강조 표시합니다. 동반자 ConflictMotions 플러그인 은 해결을위한 동작과 명령을 제공합니다.
xyz
가 일반적으로 강조 표시되지 않지만<<<<<<<
와|||||||
사이의 ' 강조 표시하고 싶습니다.