커밋 된 버전과의 차이점을 강조 표시하는 Emacs 모드가 있습니까?


31

Xcode가 꽤 깔끔하다고 생각하는 기능 중 하나는 현재 버퍼와 가장 최근의 커밋 간의 차이를 지속적으로 보여주는 "비교"모드입니다.

비교 모드

Emacs에 이와 같은 것이 있습니까? 나란히 동시 뷰를 신경 쓰지 않습니다. 변경된 줄의 배경을 강조 표시하면 큰 도움이 될 것입니다.

나는 항상 할 수 있다는 것을 알고 C-x v =있지만 한 시점의 정적 견해이며 diff 만 보여줍니다. diff를 강조 표시하여 편집 가능한 전체 파일을보고 싶습니다.

답변:


30

Dmitry Gutov의 diff-hl 라이브러리는 diff-hl-mode다음 스크린 샷의 상단 창에 표시되는 프린지 강조 표시를 제공합니다 (실제 diff는 하단 창에 비교 표시).

diff-hl 스크린 샷

vcVCS에 구애받지 않기 위해 Emacs 의 일반 기능을 사용합니다 . Readme는 "Git, Mercurial, Bazaar 및 SVN에서 테스트되었습니다. 다른 VC 백엔드에서도 작동 할 수 있습니다"라고 말합니다.

참고 diff-hl-margin-mode터미널 이맥스가 아닌 GUI 이맥스를 사용하는 경우 사용할 수있다.

기본적으로 저장된 파일과 저장소 diff-hl간의 차이점 만 강조 표시됩니다 . 하지만 당신이 편집하는 동안 변경 사항을 볼 수 있도록하는 것이 잘으로 강조하기 위해 저장되지 않은 차이를 할 수 있습니다.diff-hl-flydiff-mode

또한 내장 (표준 Emacs에 따라) 참고하십시오 highlight-changes-mode. 그것은 바로 당신의 문제를 즉시 해결할 수는 없지만 highlight-compare-*기능이 솔루션을 용이하게 할 수 있습니다.


# 33이 해결되었습니다.
Dmitry

1
드미트리 : 실제로 - 실제로 지난 몇 일 동안 그것을 밖으로 시도하고 있었고,이 기능이 : 아주 잘 작동하는지 내가 확인할 수 있습니다
필리스

나는 그것을 듣고 기쁘다; 그것은 매우 참을성있는 기고자에 의해 작성되었습니다. 답변을 업데이트 해 주셔서 감사합니다!
Dmitry

10

사용중인 버전 제어 시스템을 지정하지 않지만 git 인 경우 줄을 추가, 삭제 또는 수정했을 때 git-gutter 를 사용 하여 여백에 표시자를 넣을 수 있습니다 . MELPA를 통해 이용할 수 있습니다 M-x package-install git-gutter.


이것은 내가 상상했던 것과 거의 비슷해 보이지만 버퍼가 저장되면 거터를 업데이트하는 것처럼 보입니다. flymake와 통합 (또는 다른 방식으로 행동)하는 것이 얼마나 어려운지 궁금합니다.
Ken

10

Ediff를 확인해야합니다 . diff를 표시하고 (3 방향) 병합 도구로 작동 할 수 있습니다. 변경 사항을 쉽게 되돌릴 수 있으며 미세한 차이를 강조 표시하여 실제로 변경된 각 덩어리의 일부만 표시합니다.

ediff의 스크린 샷

ediff-revision 가장 최근의 커밋 또는 이전 커밋과 쉽게 비교할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.