从磁盘上的版本刷新文件的命令是:e!
如何对缓冲区中的所有文件执行相同操作?
背景:我需要这个,因为我正在使用带有多个分支的git,其中一个vim open包含一个缓冲区。当我结账时,我想让vim刷新。
答案 0 :(得分:115)
:checkt[ime]
命令是为此目的而设计的。
它会提示您重新加载任何已更改的缓冲区;如果你想跳过提示,你可以事先:set autoread
(你仍会得到有关本地未保存更改的缓冲区的提示)。
它还避免了Steven Lu在接受的答案中提到的语法突出问题; :bufdo
turns off syntax highlighting by design
答案 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