当磁盘上的文件发生更改时,如何让 Emacs 自动刷新所有缓冲区?

我有一个非 emacs 全局搜索和替换函数,使我的磁盘文件变得比 emacs 缓冲区(整体)更新。有没有什么方法可以告诉 emacs 一下子刷新磁盘上的所有缓冲区,而不必通过重新加载文件来逐个执行?

谢谢! D

38916 次浏览

。 emacs中的 (global-auto-revert-mode t)

如果你正在使用 Emacs GUI (我的是 Windows7上的 GNUEmacs 25.1.1) ,这里有一个替代方案:

  1. 在菜单栏中单击 “选择”
  2. 选择 < strong > “ Customize Emacs”
  3. 选择 < 强 > 「已储存选项」
  4. 然后,您应该看到一个搜索字段,您在其中输入 “全局自动恢复模式”并按下 “搜索”按钮
  5. 单击 “切换”按钮并确保按钮右侧显示 “开”
  6. 「申请及储存」按钮右下方的搜索字段

如果你已经打开了一些文件,你应该会看到这立即生效。祝你好运!

感谢@Ashwin 指出 (global-auto-revert-mode t)。我发现 Emacs 不会自动更新磁盘上文件已经更改的缓冲区。来自 https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html:

默认情况下,自动恢复模式使用文件通知工作,即操作系统将文件系统中的更改报告给 Emacs。您可以通过将变量 auto-ret-use-tification 自定义为 nil 值来禁用文件通知的使用,然后 Emacs 将通过每5秒轮询一次来检查文件更改。您可以通过变量 auto-return-time 更改轮询间隔。

在我设置 (setq auto-revert-use-notify nil)之后,Emacs 确实每5秒刷新一次所有缓冲区。