在vim中从磁盘刷新缓冲区中的所有文件

从磁盘上的版本刷新文件的命令是:e!

我怎样才能做到这一点在缓冲区中的所有文件?

背景:我需要这样做,因为我使用git打开一个包含缓冲区的vim。 当我检查分支时,我想要刷新vim。

阅读bufdo的文档,它应该做你想做的。

:checkt[ime]命令就是为了这个目的而devise的。

它会提示你重新加载任何已经改变的缓冲区; 如果你想跳过提示,你可以这样做:set autoread事先:set autoread (你仍然会在本地未保存更改的缓冲区中得到一个提示)。

它也避免了被接受的答案中Steven Lu提到的语法突出问题; :bufdoclosuresdevise的语法高亮 。

通过以下urlfind: http : //vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html

这是我最终放在我的.vimrc中:

 fun! PullAndRefresh() set noconfirm !git pull bufdo e! set confirm endfun nmap <leader>gr call PullAndRefresh() 

来自:help autoread

当一个文件被检测到在Vim之外被更改,并且在Vim里面没有被更改时,会自动再次读取它。 当文件被删除时,这个没有完成。

如果像我一样,你只是总是被动地重新加载陈旧而未修改的缓冲区,那么这似乎应该完成工作。

但是最后的细节是vim注意到陈旧的缓冲区。 这可以强制checktime 。 如果您设置了焦点事件 ,那么只要我们获得焦点,我们就可以运行checktime

 set autoread autocmd FocusGained * checktime 

这个答案也有一些有趣的细节。