emacs가이 파일을 복구 할 것을 제안 할 때 diff를 보는 방법은 무엇입니까?


51

때때로 발생합니다. emacs는 파일에 저장되지 않은 변경 사항을 복구하라는 메시지를 표시하지만, 변경 사항을 원하는지 여부는 기억할 수 없습니다.

recover-this-file버퍼 에서 시작 하여 diff를 보거나 변경 사항을 직접 볼 수있는 방법이 있습니까?

예를 들어, magit-mode상태 버퍼에서 편집 된 파일을 탭할 때 제공되는 것과 같은 것 입니다.


답변:


51

recover-this-file자동 저장 버전을 실행 하고 수락하면 자동 저장 내용이 포함 된 수정 된 버퍼가 생깁니다. 이 시점 M-x diff-buffer-with-file RET에서 수정 된 버퍼와 저장된 파일의 차이점을 확인할 수 있습니다 .

내가 바인딩 한 키는 실제로 통합 diff를 생성하고 버퍼에 대한 프롬프트를 건너 뛰기 위해 실제로 사용자 정의 함수를 실행합니다 (현재 버퍼로 가정).

(defun my-diff-buffer-with-file ()
  "Compare the current modified buffer with the saved version."
  (interactive)
  (let ((diff-switches "-u")) ;; unified diff
    (diff-buffer-with-file (current-buffer))))

또한 사용할 수있는 ediff equivalent (일반적으로 선호하지만 둘 다 사용하지만)이 있습니다. M-x ediff-current-file RET

diff를 확인한 후 수정 사항을 거부하려면 간단하게 undo복구 할 수 있어야합니다 . (당신은 항상 사용할 수있는 실패 revert-bufferfind-alternate-file.)

diff 명령에 대한 키 바인딩에는 종종 =다음과 같은 편리함이 있습니다 (기본 C-z바인딩을 바인딩 해제하고 대신으로 이동하면 사용자 정의 바인딩의 접두어로 C-z C-z열립니다 C-z).

(global-set-key (kbd "C-z =") 'my-diff-buffer-with-file)
(global-set-key (kbd "C-z C-=") 'ediff-current-file)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.