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

Dav*_*ave 174 emacs elisp dot-emacs

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

谢谢!d

Ash*_*win 222

(global-auto-revert-mode t)在你的.emacs中.

  • @Dave :(全局 - )自动反向模式如果修改了相应的缓冲区,则不会还原文件,因此不存在丢失未保存更改的风险. (12认同)
  • 使用git切换分支时可以很好地工作.谢谢! (6认同)
  • 谢谢!我正在使用revbuff和自动恢复模式的组合.当我想覆盖更改时,auto-revert-mode工作正常. (2认同)

ben*_*inz 10

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

  1. 单击菜单栏中的"选项"
  2. 选择"自定义Emacs"
  3. 选择"已保存的选项"
  4. 然后,您应该会看到一个搜索字段,您可以在其中输入"global-auto-revert-mode"并按"搜索"按钮
  5. 单击"切换"按钮,确保它在按钮右侧显示"打开"
  6. 按搜索字段正下方的"应用并保存"按钮

如果您已经打开了一些文件,您应该立即看到它已生效.祝好运!


jdc*_*jdc 8

感谢@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 秒刷新一次所有缓冲区。