从磁盘上的版本刷新文件的命令是 :e!
如何对缓冲区中的所有文件执行相同操作?
背景:我需要这个,因为我使用带有多个分支的git,其中一个vim open包含一个缓冲区.当我结帐分支时,我想要vim刷新.
该:checkt[ime]
命令是为此目的而设计的.
它会提示您重新加载任何已更改的缓冲区; 如果你想跳过提示,你可以:set autoread
事先做(你仍然会得到一个有本地未保存更改的缓冲区的提示).
它还避免了Steven Lu在接受的答案中提到的语法突出问题; :bufdo
通过设计关闭语法高亮.
发现来自:http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html
阅读文档bufdo
,它应该做你想要的.
这是我最终放入.vimrc的内容:
fun! PullAndRefresh() set noconfirm !git pull bufdo e! set confirm endfun nmapgr call PullAndRefresh()
来自:help autoread
:
如果检测到文件已在Vim外部更改且Vim内部未更改,则会再次自动读取.文件被删除后,这没有完成.
如果像我一样,你只想被动地重新加载陈旧但未修改的缓冲区,那么这似乎应该完成工作.
然而,最后的细节是当 vim注意到陈旧的缓冲区时.这可以强迫checktime
.如果您设置了焦点事件,那么checktime
只要我们获得焦点就可以运行:
set autoread autocmd FocusGained * checktime
这个答案也有一些有趣的细节.