답변:
정확히 당신이 요구 한 것은 아니지만 이것이 유용하다는 것을 알 수 있습니다 : Splice plugin : 3-way merge 동안 충돌을 해결하기위한 Vim 플러그인 . Vimeo에 멋진 데모 스크린 캐스트가 있습니다.
기본 vimdiff를 고수하려는 경우, 나머지 창에 대한 버퍼 번호를 검색하고이를 사용하여 :diffget
두 번 호출하는 함수를 작성할 수 있습니다 .
*:diffg* *:diffget*
:[range]diffg[et] [bufspec]
Modify the current buffer to undo difference with another
buffer. If [bufspec] is given, that buffer is used. If
[bufspec] refers to the current buffer then nothing happens.
Otherwise this only works if there is one other buffer in diff
(...)
The [bufspec] argument above can be a buffer number, a pattern for a buffer
name or a part of a buffer name. Examples:
:diffget Use the other buffer which is in diff mode
:diffget 3 Use buffer 3
:diffget v2 Use the buffer which matches "v2" and is in
diff mode (e.g., "file.c.v2")
매핑을 사용하여이 함수에 대한 호출을에서 사용한 키에 할당 할 수 있습니다 kdiff3
.
이 vimcast에 대한 추가 정보 를 찾을 수 있습니다 .
Git 충돌 마커가있는 줄만 삭제할 수 있습니다. 다음 두 가지 방법으로 시작하는 모든 줄을 삭제합니다.
<<<<<<<
=======
>>>>>>>
방법 1 : 명령을 수동으로 입력 및 실행
:g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d
방법 2 : 사용자 정의 명령 구현
"Delete all Git conflict markers
"Creates the command :GremoveConflictMarkers
function! RemoveConflictMarkers() range
echom a:firstline.'-'.a:lastline
execute a:firstline.','.a:lastline . ' g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d'
endfunction
"-range=% default is whole file
command! -range=% GremoveConflictMarkers <line1>,<line2>call RemoveConflictMarkers()
Vim diffget 과 diffput 은 하나의 가지만 선택합니다. 따라서 위에 제공된 것 이외의 유일한 해결책은 두 파일에서 작업 복사본으로 수동으로 잡아 당겨 붙여 넣는 것입니다.