一旦磁盘上的文件发生变化,VIM 就会自动重新加载该文件

一旦磁盘上的文件发生变化,VIM 就会自动重新加载该文件

假设文件在 VIM 缓冲区中没有未保存的更改,我希望当文件在磁盘上发生更改时它会自动重新加载。最常见的用例是当我更新文件所在的工作副本时。

我怎样才能实现这个目标?

答案1

在你的~/.vimrc

set autoread

答案2

这对我有用

set autoread                                                                                                                                                                                    
au CursorHold * checktime  

第一行本身还不够。你可以把.vimrc

感谢 Phan Hai Quang

答案3

由此回答(参考潘海光以及@flukus 的评论)

需要时可以从 ex(在 vim 中)运行此命令(或者将每个命令放在 vimrc 中,以便在打开日志文件时使用)。

:set autoread | au CursorHold * checktime | call feedkeys("lh")

解释:
-自动阅读:当从外部更改时读取文件(但它不能自行工作,没有内部计时器或类似的东西。它只会在 vim 执行操作时读取文件,例如 ex 中的命令:!
-CursorHold * 检查时间:当用户在 'updatetime' 指定的时间内(默认为 4000 毫秒)没有移动光标时,将执行 checktime,检查文件外部的更改
-调用 feedkeys("lh"):光标移动一次,向右移动,然后向左移动。然后什么也没有发生(...这意味着,触发了 CursorHold,这意味着我们有一个环形

答案4

vim 自动读取到目前为止插件对我有用:

vim 自动读取

自动使 vim 重新加载自上次从 vim 写入以来已写入磁盘但未在缓冲区中修改的文件。这允许使用其他应用程序编辑在 vim 中打开的文件并保存。返回 vim 时,只要您自上次更改以来未修改过该文件,该文件就会自动更新以反映磁盘上所做的更改,就像您手动按下了 :e 一样。

相关内容