git
中的功能分支上工作时,我经常需要存储更改以将错误修复提交到主分支。完成更改后,我git stash pop
会更新文件上的时间戳。即使文件相同,下一次尝试保存时,我也会得到:
警告:文件自读取以来已更改!!
您真的要写入文件(y / n)吗?
我不想每次在磁盘上更改文件时都自动重新加载文件,仅当我
git stash pop
时。现在,我分别手动重新加载每个缓冲区(
:e
)。我有什么办法可以在一个命令中执行此操作吗?#1 楼
请参阅:help bufdo
了解您想做什么。它将在缓冲区列表中的每个缓冲区中执行一个命令。例如::bufdo e
在发出
:help noconfirm
命令之前,您可能还希望查看bufdo
以禁用确认对话框。:set noconfirm
,并在执行
bufdo
命令后重新启用它。:set confirm
#2 楼
您可以使用:checktime
命令执行此操作。从文档中::checkt[ime] Check if any buffers were changed outside of Vim.
This checks and warns you if you would end up with two
versions of a file.
该命令将询问您如何为每个缓冲区的文件时间戳更改了该做什么。要禁用未更改的文件,可以执行
:set autoread
强制vim重新加载它们。 vim会询问您缓冲区和磁盘上文件之间的内容是否已更改。您可以设置如下所示的映射以便于使用:
nnoremap <F5> :checktime<CR>
评论
以下是一些奖励信息,它们实际上并不是答案的一部分:对我而言,在OpenSUSE上,gvim(vim的GTK GUI)在获得关注时自动执行此操作。我真的不知道为什么会这样做,也没有在其他系统上检查过,但我认为它可能会有用。也许可以确认吗?
–tokoyami
2015年2月5日在22:05
这真的很有帮助!我最终所做的是将此命令集成为选项卡切换快捷方式的一部分。即nnoremap tl:tabnext
–cr8ivecodesmith
19 Mar 6 '19 at 11:39
@tokoyami,您在gvim中具有的功能可能与vim中的FocusGained事件有关。您可以在此处找到一些相关信息-unix.stackexchange.com/a/383044/99801。
– Victor Yarema
19年10月10日在15:24
评论
要强制,请尝试::bufdo! e。
– Kenorb
15年4月18日在21:22
并且没有在屏幕上打印消息:静音!布夫多
–维尔纳
15年8月12日在20:26