当您在 vim 之外更改文件时,vim 会注意到并提示您采取行动:它是否应该重新加载文件并放弃您所做的任何更改?它是否应该保留您的更改?
通常,只需重新读取缓冲区即可。通常,会发生这种情况:
- 在 vim 中打开一个文件。
- 砍掉,保存。
- 在 git 中更改分支。
- Vim 检测到文件已改变。
此时,我真的只想重新加载文件,因为它已保存。(如果缓冲区未保存,则正常提示是可以的。)如果我有一个杂散缓冲区,我单击/键入“加载文件”很容易出错不是已保存。仅针对已修改的缓冲区查看该消息会更加安全。
能够完全满足我要求的东西就太好了,但我确实还有其他的愿望(比较修改后的缓冲区就很酷):你能编写脚本来描述当磁盘上的文件发生变化时会发生什么吗?
答案1
如果:set autoread
还不够,您确实可以编写行为脚本;在这种情况下,事件FileChangedShell
被触发,您可以将其挂钩并影响行为。:help FileChangedShell
详情请参阅。
答案2
听起来 vim 的自动读取选项可以满足您的要求。您可以通过将以下内容添加到文件vimrc
或将其输入到 vim 会话中来启用该选项:
:set autoread
您可以使用以下方法获取有关该选项的更多信息:
:help 'autoread'
有关查看 vim 缓冲区中的内容与磁盘运行中的内容之间的差异的信息:
:help :DiffOrig
其中包含一些您可以放入vimrc
文件中的代码,以定义:DiffOrig
执行该操作的命令。