在vim中从磁盘刷新缓冲区中的所有文件
从磁盘上的版本刷新文件的命令是:e!
我怎样才能做到这一点在缓冲区中的所有文件?
背景:我需要这样做,因为我使用git打开一个包含缓冲区的vim。 当我检查分支时,我想要刷新vim。
阅读bufdo
的文档,它应该做你想做的。
:checkt[ime]
命令就是为了这个目的而devise的。
它会提示你重新加载任何已经改变的缓冲区; 如果你想跳过提示,你可以这样做:set autoread
事先:set autoread
(你仍然会在本地未保存更改的缓冲区中得到一个提示)。
它也避免了被接受的答案中Steven Lu提到的语法突出问题; :bufdo
closuresdevise的语法高亮 。
通过以下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
这个答案也有一些有趣的细节。