ChatGPT解决这个技术问题 Extra ChatGPT

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

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

谢谢! D

global-auto-revert-mode 起到了神奇的作用...

T
Tim Cooper

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


在我总是想保持同步的情况下,这看起来不错,谢谢!我想我最终会使用 revbuffs,这样我就可以自己管理冲突(否则有时我可能会丢失未保存的更改,我的工作流程目前的工作方式。)
谢谢!我正在使用 revbuffs 和 auto-revert-mode 的组合。当我想覆盖更改时,自动恢复模式效果很好。
@Dave:如果相应的缓冲区被修改,(global-)auto-reverse-mode 将不会还原文件,因此应该没有丢失未保存更改的风险。
我已经在.emacs中设置了变量,但是当我编辑一些代码xcode时,然后在该行读取文件(已经打开),在xcode中编辑不在那里,需要Mx revert-buffer。(mac + emacs 24.3.1)
使用 git 切换分支时效果很好。谢谢!
b
benjaminz

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

单击菜单栏中的“选项” 选择“自定义 Emacs” 选择“保存的选项” 然后您应该会看到一个搜索字段,您可以在其中输入“全局自动恢复模式”并按“搜索”按钮单击“切换”按钮并确保它在按钮右侧显示“on” 按搜索字段正下方的“Apply and Save”按钮

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


j
jdc

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


您的意思是 (setq auto-revert-use-notify nil),因为它是一个变量吗?