Vim을 병합 도구로 사용할 때“둘 다 가져갈”방법이 있습니까?


11

Vim을 Git과 3 웨이 병합으로 사용하고 때로는 로컬 및 원격 지점에서 변경해야합니다. kdiff3몇 번의 키 누름으로 이것을 할 수 있습니까, Vim에서 이것을 할 수있는 방법이 있습니까?

답변:


6

정확히 당신이 요구 한 것은 아니지만 이것이 유용하다는 것을 알 수 있습니다 : 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에 대한 추가 정보 찾을 수 있습니다 .


3

yANK와 p그것이 아마도, 비록 유타보다 조금 덜 편리하고, 어떤 플러그인이나 추가 기능없이 작업 할 수 있습니다 dg또는dp

부모 버퍼에서 필요한 비트를 복사하여 병합 된 버퍼의 올바른 지점에 붙여 넣기 만하면됩니다. 이것은 전체가 아닌 diff 블록의 일부만 원하는 경우에도 유용합니다.

때때로 Vim이으로 강조 표시를 업데이트하도록 강제해야 할 수도 있습니다 :diffupdate.


1

단일 명령으로 대상 및 병합 분기의 변경 사항을 결합하려면 다음을 수행하십시오.

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 diffgetdiffput 은 하나의 가지만 선택합니다. 따라서 위에 제공된 것 이외의 유일한 해결책은 두 파일에서 작업 복사본으로 수동으로 잡아 당겨 붙여 넣는 것입니다.


공감할 이유를 제시하십시오.
user3751385

이것은 내가하는 전부입니다-마커를 삭제하십시오.
Aaron McMillin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.