突出显示缓冲区修改

31

在使用emacs编辑文件时,经常会出现文件缓冲区被修改的情况(当然啦!)。在退出前,emacs会询问是否保存更改。现在很有趣的是想知道实际上发生了什么变化。有没有办法找出来呢?


1
请参见 https://dev59.com/SnRC5IYBdhLWcg3wVvct。 - Jouni K. Seppänen
6个回答

30

从Emacs 22.1版本开始(至少如此),'save-buffers-kill-emacs(默认绑定为C-x C-c)会提示您保存每个未保存的带有文件的缓冲区。当提示时,键入d以保存并查看差异。

来自帮助文档:

Save some modified file-visiting buffers.  Asks user about each one.
You can answer `y' to save, `n' not to save, `C-r' to look at the
buffer in question with `view-buffer' before deciding or `d' to
view the differences using `diff-buffer-with-file'.

如果您查看提示,它应该会显示类似于:

Save file /path/to/file.txt? (y, n, !, ., q, C-r, d, or C-h) 

输入 C-h 将会给你提供更详细的描述(但是你所要的是 d):

Type SPC or `y' to save the current buffer;
DEL or `n' to skip the current buffer;
RET or `q' to give up on the save (skip all remaining buffers);
C-g to quit (cancel the whole command);
! to save all remaining buffers;
C-r to view this buffer;
d to view changes in this buffer;
or . (period) to save the current buffer and exit.

17

我使用 diff-buffer-with-file 命令,并选择与缓冲区对应的文件(这是此命令的默认设置...只需按回车键即可)。

您也可以使用 highlight-changes-mode,但是除非您启用它,否则它不会跟踪更改,因此如果您想要在关闭未处于此模式的文件时查看更改内容,则不太有用 :-)


9

这将使更改标记显示在左侧边缘。 - CodyChan

2
我发现djcb关于在Emacs中跟踪更改的这篇文章非常有帮助。诀窍是将以下代码添加到您的 .emacs 文件中:
;; higlight changes in documents
(global-highlight-changes-mode t)
(setq highlight-changes-visibility-initial-state nil); initially hide

当您想查看更改内容时,请切换 highlight-changes-visible-mode。


1
在这种情况下,我键入“撤消”以查看最后一次更改(通常是一些错误输入的杂散字符,因为我经常及早保存)。
如果当前更改有其他指示,例如在边框中,就像Eclipse文本编辑器中的快速差异一样,那将是很好的。

如果撤销操作不小心撤销了一个重要的更改,您可以只需输入一些字符并运行两次撤销 - 这要感谢Emacs的撤销功能,它比大多数编辑器的撤销功能更强大。 - Jouni K. Seppänen

0

我在这类事情上使用goto-chg。它并不完美,但总能足够提醒我记起自己做出的改变,而之前却迅速忘记了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接