189

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

谢谢!D

4

3 回答 3

244

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

于 2009-09-26T17:33:29.767 回答
12

如果您使用的是 Emacs GUI(我的是 Windows 7 上的 GNU Emacs 25.1.1),这是一个替代方案:

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

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

于 2016-10-19T16:13:31.110 回答
9

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

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

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

于 2019-01-25T16:45:03.663 回答