Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 从vim中的磁盘刷新缓冲区中的所有文件_Git_Vim_Buffer - Fatal编程技术网

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

Git 从vim中的磁盘刷新缓冲区中的所有文件,git,vim,buffer,Git,Vim,Buffer,从磁盘上的版本刷新文件的命令是:e 如何对缓冲区中的所有文件执行相同的操作 背景:我需要它,因为我使用的git具有多个分支,其中一个vim打开,其中包含一个缓冲区。当我签出分支时,我希望vim刷新。阅读bufdo的文档,它应该可以做您想要的事情。以下是我最后在我的.vimrc中放入的内容: fun! PullAndRefresh() set noconfirm !git pull bufdo e! set confirm endfun nmap <leader>gr

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

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


背景:我需要它,因为我使用的git具有多个分支,其中一个vim打开,其中包含一个缓冲区。当我签出分支时,我希望vim刷新。

阅读
bufdo
的文档,它应该可以做您想要的事情。

以下是我最后在我的.vimrc中放入的内容:

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

nmap <leader>gr call PullAndRefresh()
有趣!普拉德雷弗斯()
不确认
!吉特拉力
好极了!
设定确认
结束
nmap gr调用PullAndRefresh()

这个
:check t[ime]
命令就是为了这个目的而设计的

它将提示您重新加载任何已更改的缓冲区;如果您希望跳过提示,您可以事先执行
:设置自动读取
(您仍然会收到关于本地未保存更改的缓冲区的提示)

它还避免了Steven Lu在公认答案中提到的语法突出显示问题


通过以下途径找到:

来自
:帮助自动读取:

当检测到文件已在Vim外部更改,但在Vim内部未更改时,自动再次读取该文件。当文件已被删除时,不会执行此操作

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

然而,最后一个细节是vim何时注意到陈旧的缓冲区。可通过
检查时间
强制执行。如果您有,那么我们可以在获得焦点时运行
checktime
,如下所示:

set autoread
autocmd FocusGained * checktime

还有一些有趣的细节。

正如@Matthew S在这里提到的, 您可以使用:

:set noconfirm
:bufdo !e
:set confirm

好的,太好了,所以,:bufdo e!我会的。但每次都有一个提示加载(Y/N)。如何摆脱它?在使用
bufdo
命令之前使用
set noconfirm
set confirm
之后重新启动)。
bufdo e
奇怪地将所有缓冲区都保留为非语法-highlighted@StevenLu检查保芬尼下面的答案。为什么人们投票支持这个?这不仅不是一个答案,而且它引导您的方向意味着您的语法高亮显示在重新加载后被禁用。