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

时间:2009-08-13 13:37:22

标签: git vim buffer

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

如何对缓冲区中的所有文件执行相同操作?

背景:我需要这个,因为我正在使用带有多个分支的git,其中一个vim open包含一个缓冲区。当我结账时,我想让vim刷新。

5 个答案:

答案 0 :(得分:115)

:checkt[ime]命令是为此目的而设计的。

它会提示您重新加载任何已更改的缓冲区;如果你想跳过提示,你可以事先:set autoread(你仍会得到有关本地未保存更改的缓冲区的提示)。

它还避免了Steven Lu在接受的答案中提到的语法突出问题; :bufdo turns off syntax highlighting by design

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

找到

答案 1 :(得分:85)

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

答案 2 :(得分:18)

这是我最终放入.vimrc的内容:

fun! PullAndRefresh()
  set noconfirm
  !git pull
  bufdo e!
  set confirm
endfun

nmap <leader>gr call PullAndRefresh()

答案 3 :(得分:7)

来自:help autoread

  

如果检测到文件已在Vim外部更改且未在Vim内部更改,则会自动再次读取。当文件被删除时,这没有完成。

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

然而,当 vim注意到陈旧的缓冲区时,最后的细节是。这可以通过checktime强制执行。如果您有focus events set up,那么每当我们获得焦点时,我们就可以运行checktime

set autoread
autocmd FocusGained * checktime

This answer也有一些有趣的细节。

答案 4 :(得分:0)

@Matthew S在这里https://vi.stackexchange.com/a/462中提到, 您可以使用:

:set noconfirm
:bufdo !e
:set confirm