Vimdiff에서 diff 섹션을 확장 / 축소하는 방법은 무엇입니까?


295

오늘 vimdiff를 사용하기 시작했고 Windows 기반 diff 편집기에서 당연하게 여겼던 것들 중 일부를 수행하고 싶었습니다 (확장 / 축소 섹션과 같은 전체 파일 확장 / 위의 3 개의 컨텍스트 라인이있는 유일한 diff 또는 아래 등). 나는 현재 다음 명령 만 알고 있습니다.

키보드 단축키:

  • do -다른 창에서 현재 창으로 변경 사항을 가져옵니다.

  • dp -현재 창에서 다른 창으로 변경 사항을 넣습니다.

  • ]c -다음 변경으로 넘어갑니다.

  • [c -이전 변경으로 이동합니다.

  • CTRL+ W, w-다른 분할 창으로 전환합니다 ( CTRL+ W, CTRL+ WCTRL나중에 키 를 놓을 경우를 위해 동일한 작업을 수행함)

비슷한 기능을 복제 할 수있는 누군가가 올바른 방향으로 나를 가리킬 수 있습니까?

예를 들어 diff 주변의 선을 펼치거나 접을 수 있다면 좋을 것입니다.


2
긴 변경 사항 목록을 추가 /
복원


1
'vimdiff'가 googled 될 때 상위 3 개의 게시물이되어 4 년이 지난 후에 질문이 종료되는 것을 보는 것이 재미 있습니다!
TCSGrad

답변:


241

언급 한 것 외에도 다음을 비교할 때 자주 사용합니다.

  • :diffupdate :diffu-> diff를 다시 계산하십시오. vim을 여러 번 변경 한 후 더 이상 최소 변경 사항이 표시되지 않을 때 유용합니다. vimdiff 내에서 파일이 수정 된 경우에만 작동합니다. 그렇지 않으면 다음을 사용하십시오.
    • :e vimdiff 외부에서 파일을 수정 한 경우 파일을 다시로드합니다.
  • :set noscrollbind-> 두 버퍼에서 동시 스크롤을 일시적으로 비활성화하고 다시 활성화하여 :set scrollbind스크롤 할 수 있습니다.

vim 사용자 매뉴얼에서 접기에 관한 장을 요청했습니다 . diffs 밖에서 나는 때때로 사용합니다 :

  • zo -> 오픈 폴드.
  • zc -> 접기를 닫습니다.

그러나 아마도 더 나은 서비스를 제공받을 것입니다.

  • zr -> 폴딩 레벨 감소.
  • zm -> 한 번 더 접어주세요.

또는:

  • zR -> 폴딩을 완전히 줄였습니다.
  • zM -> 가장 많이 접어 라!.

당신이 사용하는 N 접는 선을 요구 다른 것은은에서 찾을 수 있습니다 옵션에 정력 참조 매뉴얼 섹션 비아, DIFF 섹션 :

  • set diffopt=<TAB>을 업데이트하거나 추가하십시오 context:n.

또한 diff사용자 매뉴얼 섹션을 봐야합니다 .


실제로 매우 포괄적! 나는 당신이 말한 링크를 확인했지만 더 많은 답글을 얻었는지 확인하기 위해 며칠 동안 질문을 계속 열어 두었습니다 (주말에 게시했지만 많은 사람들이 활동하지 않을 것입니다).
TCSGrad

그건 그렇고, vimdiff를 사용하여 3 방향 해석 등을 병합 할 수 있는지 알고 있습니까? 그때 정말 좋을 것입니다!
TCSGrad

1
@ shan23 3 방향 병합 (git 용)의 경우이를 확인 하십시오 . svn에 대한 의견도 있습니다. 그래도 4 개의 버퍼가있을 때 명령을 파악하려고합니다 (do / dp가 작동하지 않음).
quornian

대한 :set noscrollbind사항을 적용하려면 또한해야 :set nocursorbind기본하지 않은 사용. 따라서 두 옵션을 모두 조정해야합니다.
피 묻은

4

대소 문자를 무시하도록 vimdiff 설정

vim diff를 시작한 후

 gvim -d main.sql backup.sql &

성가신 하나의 파일에는 MySQL 키워드가 소문자로 있고 다른 대문자에는 실제로 다른 모든 줄의 차이점을 보여줍니다

:set diffopt+=icase

이것은 화면을 동적으로 업데이트하며 쉽게 다시 끌 수 있습니다.


이것은 좋은 팁이지만, 그것이 현재의 질문과 어떻게 관련되어 있는지 알지 못합니다 (vimdiff에서 diff 섹션을 확장하고 축소하는 방법).
Paul Stelian


0

ctrl + w, w는 언급 한대로 분할 창을 탐색하는 데 사용할 수 있습니다.

이제 특정 변경 사항 만 선택하여 다음과 같이 다른 창에 붙여 넣을 수 있습니다. 예를 들어 코드 1을 창 1에서 창 2로 변경하고 현재 커서가 pane1에있는 것처럼 예를 들어 설명합니다.

  • Shift-v를 사용하여 줄을 강조 표시하고 위 ​​또는 아래 키를 사용하여 필요한 코드를 선택하고 아래에 작성된 3 단계부터 계속하여 변경 내용을 다른 창에 붙여 넣습니다.

  • 비주얼 모드를 사용한 다음 변경

    1 'v'를 클릭하면 시각적 모드로 이동합니다. 2 위로 또는 아래로 키를 사용하여 필요한 코드를 선택합니다. 3, Esc 키를 클릭하십시오. ctrl + w, w '를 사용하여 pane2로 이동 6'p '를 클릭하여 필요한 곳에 변경 사항을 붙여 넣습니다.


1
지정한 내용 전체 (첫 번째 줄 제외)는 vimiff 자체가 아니라 vim 자체의 기능입니다.
TCSGrad
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.