切换 git 分支时如何处理 vim 缓冲区?
How do I deal with vim buffers when switching git branches?
因此,我在 vim 缓冲区中打开了大量文件,并且我正在使用 git 开发功能分支。突然,我意识到我需要恢复到我的 master 分支来快速修复。
提交后,我让 vim 会话保持打开状态并切换回主分支。但是,当我尝试从缓冲区加载我需要的文件时,我现在收到消息
Warning: File "<filename>" has changed since editing started
这对我来说是完整的。缓冲区中的文件来自我的功能分支,现在我已经切换回主分支,可以理解有一些增量需要处理。
我的问题是,这种情况在专业层面是如何处理的?
想到解决方案,我可以关闭所有缓冲区并重新打开文件。但是,我希望有一种 "smart" 方法可以做到这一点。有没有办法用所需分支中的对应文件替换当前 vim 缓冲区中的文件?有没有办法维护多个缓冲区,每个 git 分支一个?
最终,我希望能够在 git 分支之间切换,并让打开的 vim 会话只是 "know" 当前应该驻留在缓冲区中的文件版本。
部分原因是我仍在学习 vim 缓冲区的工作原理,并且刚刚开始广泛使用它们。因此,如果我做出了任何不成立的假设,请在适当的地方纠正我。
您可以执行 :bufdo e
强制 vim 从文件系统重新读取所有打开的缓冲区。
bufdo
是一种将命令应用于多个缓冲区的方法。 (同样,如果您使用制表符,则有一个 tabdo
)
所以它会用新分支的版本替换旧分支的版本。
(那里有类似的问题和答案:Git branching while files are opened)
我会在你的 ~/.vimrc
:
中推荐你 :set autoread
When a file has been detected to have been changed outside of Vim and
it has not been changed inside of Vim, automatically read it again.
因此,我在 vim 缓冲区中打开了大量文件,并且我正在使用 git 开发功能分支。突然,我意识到我需要恢复到我的 master 分支来快速修复。
提交后,我让 vim 会话保持打开状态并切换回主分支。但是,当我尝试从缓冲区加载我需要的文件时,我现在收到消息
Warning: File "<filename>" has changed since editing started
这对我来说是完整的。缓冲区中的文件来自我的功能分支,现在我已经切换回主分支,可以理解有一些增量需要处理。
我的问题是,这种情况在专业层面是如何处理的?
想到解决方案,我可以关闭所有缓冲区并重新打开文件。但是,我希望有一种 "smart" 方法可以做到这一点。有没有办法用所需分支中的对应文件替换当前 vim 缓冲区中的文件?有没有办法维护多个缓冲区,每个 git 分支一个?
最终,我希望能够在 git 分支之间切换,并让打开的 vim 会话只是 "know" 当前应该驻留在缓冲区中的文件版本。
部分原因是我仍在学习 vim 缓冲区的工作原理,并且刚刚开始广泛使用它们。因此,如果我做出了任何不成立的假设,请在适当的地方纠正我。
您可以执行 :bufdo e
强制 vim 从文件系统重新读取所有打开的缓冲区。
bufdo
是一种将命令应用于多个缓冲区的方法。 (同样,如果您使用制表符,则有一个 tabdo
)
所以它会用新分支的版本替换旧分支的版本。
(那里有类似的问题和答案:Git branching while files are opened)
我会在你的 ~/.vimrc
:
:set autoread
When a file has been detected to have been changed outside of Vim and it has not been changed inside of Vim, automatically read it again.