脚本vim的文件已在外部改变检测

脚本vim的文件已在外部改变检测

当您在 vim 之外更改文件时,vim 会注意到并提示您采取行动:它是否应该重新加载文件并放弃您所做的任何更改?它是否应该保留您的更改?

通常,只需重新读取缓冲区即可。通常,会发生这种情况:

  • 在 vim 中打开一个文件。
  • 砍掉,保存。
  • 在 git 中更改分支。
  • Vim 检测到文件已改变。

此时,我真的只想重新加载文件,因为它已保存。(如果缓冲区未保存,则正常提示是可以的。)如果我有一个杂散缓冲区,我单击/键入“加载文件”很容易出错不是已保存。仅针对已修改的缓冲区查看该消息会更加安全。

能够完全满足我要求的东西就太好了,但我确实还有其他的愿望(比较修改后的缓冲区就很酷):你能编写脚本来描述当磁盘上的文件发生变化时会发生什么吗?

答案1

如果:set autoread还不够,您确实可以编写行为脚本;在这种情况下,事件FileChangedShell被触发,您可以将其挂钩并影响行为。:help FileChangedShell详情请参阅。

答案2

听起来 vim 的自动读取选项可以满足您的要求。您可以通过将以下内容添加到文件vimrc或将其输入到 vim 会话中来启用该选项:

:set autoread

您可以使用以下方法获取有关该选项的更多信息:

:help 'autoread'

有关查看 vim 缓冲区中的内容与磁盘运行中的内容之间的差异的信息:

:help :DiffOrig

其中包含一些您可以放入vimrc文件中的代码,以定义:DiffOrig执行该操作的命令。

相关内容