切换git分支时如何处理vim缓冲区?

Zac*_*ack 3 git vim buffer branch version

所以,我在我的vim缓冲区中打开了大量文件,而我正在使用git开发一个功能分支.突然间,我意识到我需要回到我的主分支来快速修复.

完成提交后,我打开vim会话并切换回主分支.但是,当我尝试从缓冲区加载我需要的文件时,我现在收到消息

Warning: File "<filename>" has changed since editing started
Run Code Online (Sandbox Code Playgroud)

这对我来说是完整的.缓冲区中的文件来自我的功能分支,现在我已经切换回主分支,可以理解的是一些增量处理.

我的问题是,这种情况如何在专业水平上处理?

考虑到解决方案,我可以关闭所有缓冲区并重新打开文件.但是,我希望有一种"聪明"的方式来做到这一点.有没有办法将当前vim缓冲区中的文件替换为所需分支中的对应文件?有没有办法维护多个缓冲区,每个git分支一个?

最终,我希望能够在git分支之间切换,并且打开vim会话只是"知道"该文件的哪个版本当前应该驻留在缓冲区中.

部分原因是我仍在学习vim缓冲区如何工作,并且刚刚开始广泛使用它们.因此,如果我做出任何不成立的假设,请在适当的地方纠正我.

Xav*_* T. 7

您可以执行 a:bufdo e强制 vim 从文件系统重新读取所有打开的缓冲区。

bufdo是一种将命令应用于多个缓冲区的方法。(同样,tabdo如果您使用选项卡,则有一个)

所以它将用新分支的版本替换旧分支的版本。

(类似的问题和答案:打开文件时 Git 分支

  • `:bufdo` 关闭事件处理,因此不会激活语法高亮。 (2认同)

Ing*_*kat 6

我会推荐你:set autoread~/.vimrc:

如果检测到文件已在Vim外部更改且Vim内部未更改,则会再次自动读取.

  • 这可能更容易,但在编辑实时日志文件时有时会很麻烦。 (2认同)
  • @XavierT。由于这个选项是全局本地的,你总是可以用 `:setlocal noar` 为缓冲区关闭它。 (2认同)