当emacs建议恢复此文件时,如何查看差异?


51

有时会发生:emacs提示您恢复对文件的未保存更改,但是您不记得是否要进行这些更改。

recover-this-file缓冲区开始,是否可以查看差异或直接查看更改?

例如,类似于magit-mode在状态缓冲区中切换到已编辑文件时显示的内容。


Answers:


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等效项(我通常更喜欢,尽管我确实同时使用了两者),该等效项可以在 M-x ediff-current-file RET

如果您希望在检查差异后拒绝修改,则应该能够简单地undo进行恢复。(如果您始终可以使用revert-buffer或,则失败find-alternate-file。)

由于diff命令的键绑定经常涉及=,所以我发现以下便捷(nb,我取消了默认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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.