emacsがこのファイルを回復することを提案したときにdiffを表示する方法は?


51

時々起こる:emacsはファイルに保存されていない変更を回復するように促しますが、それらの変更が必要かどうかは思い出せません。

recover-this-fileバッファから始めて、差分を表示する方法や、変更を直接表示する方法はありますか?

たとえばmagit-mode、ステータスバッファ内の編集済みファイルをタブで移動したときに得られるもののようなものです。


回答:


51

recover-this-file自動保存バージョンを実行して受け入れた後、自動保存コンテンツを含む変更されたバッファが作成されます。この時点M-x diff-buffer-with-file RETで、変更されたバッファと保存されたファイルの違いを確認するために使用できます。

これにバインドしたキーは、実際にカスタム関数を実行して、統合された差分を生成し、バッファーのプロンプトをスキップします(現在のバッファーを想定しています)。

(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に相当するものもあります(私は両方を使用しますが、一般的には好みます)。 M-x ediff-current-file RET

差分を確認した後に変更を拒否する場合は、単純undoに回復できるはずです。(あなたがいつでもrevert-bufferまたはを使用できることに失敗した場合find-alternate-file。)

diffコマンドのキーバインディングにはが含まれることが多い=ため、次のような便利なものがあります(デフォルトのC-zバインディングをアンバインドし、代わりにを移動してC-z C-zC-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.