如何在磁盘上更改文件时让Emacs自动刷新所有缓冲区?

时间:2009-09-26 06:25:56

标签: emacs elisp dot-emacs

我有一个非emacs全局搜索和替换功能,使我的磁盘文件比我的emacs缓冲区(整体)更新。有没有办法告诉emacs一次刷新磁盘上的所有缓冲区,而不是通过重新加载文件来单独完成每个缓冲区?

谢谢! d

3 个答案:

答案 0 :(得分:217)

.emacs 中的

(global-auto-revert-mode t)

答案 1 :(得分:10)

如果您使用Emacs GUI(我的是Windows 7上的GNU Emacs 25.1.1),可以选择以下选项:

  1. 点击菜单栏中的"选项"
  2. 选择"自定义Emacs"
  3. 选择"已保存的选项"
  4. 然后您会看到一个搜索字段,您可以在其中输入" global-auto-revert-mode" ,然后按"搜索" 按钮
  5. 点击"切换" 按钮,确保其在按钮右侧显示""
  6. 在搜索字段正下方按"应用并保存" 按钮
  7. 如果您已经打开了一些文件,您应该会立即看到这个文件生效。祝你好运!

答案 2 :(得分:0)

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

  

默认情况下,“自动还原”模式使用文件通知来工作,从而操作系统将文件系统中的更改报告给Emacs。您可以通过将变量auto-revert-use-notify定制为nil值来禁用文件通知,然后Emacs将每五秒钟轮询一次,以检查文件更改。您可以通过变量auto-revert-interval更改轮询间隔。

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