在多个 emacs 会话中编辑文件

在多个 emacs 会话中编辑文件

Emacs 说

您想要修改一个缓冲区,该缓冲区的磁盘文件自上次读入或保存到该缓冲区后已发生更改。

如果您说y继续修改此缓冲区,则可能会破坏重写该文件的人的工作。如果您说r要恢复,则缓冲区的内容将从磁盘上的文件刷新。如果您说 n,您开始进行的更改将被中止。

通常,您应该键入n,然后键入M-x revert-buffer, 以获取文件的最新版本,然后再次进行更改。

为什么推荐

通常,您应该输入n,然后输入M-x revert-buffer, 来获取文件的最新版本,然后再次进行更改,

而不是

r要恢复,缓冲区的内容是从磁盘上的文件刷新的吗?

两者真的不同吗?他们对我来说似乎是一样的?

答案1

您想要修改一个缓冲区,其磁盘文件已更改自您上次将其读入或保存到此缓冲区以来。

这意味着在您保存机会之前,某人在某处更改了您当前正在使用的文件,从图形上看,它会是这样的:

              — Current file on Disk
            /
File-orig —
            \ 
              — Your saved buffer (*)

两者可以不同。如果您选择它,r它将保护您的缓冲区供以后使用从磁盘重新加载

              — Current file on Disk —
            /                          \ 
File-orig —                              — Current buffer (*)
            \ 
              — Your saved buffer

因此,您可以查看自上次从磁盘读取文件以来对文件所做的更改。

现在,当您执行r然后 时M-x revert-buffer,会发生以下情况:

              — File on Disk —
            /                  \ 
File-orig —                      — Buffer read from disk ——— (*) Applied your changes over the one on the disk
            \                                           / 
              — Your saved buffer —————————————————————

瞧!在磁盘上所做的更改和您的更改现在位于同一个文件中,两者都已合并。如果你了解Git,上面的操作应该和合并分支类似。

如果您只选择,r您所做的更改将会丢失。如果您选择y其他人所做的更改将会丢失。这就是推荐这样做的原因。

相关内容