假设文件在 VIM 缓冲区中没有未保存的更改,我希望当文件在磁盘上发生更改时它会自动重新加载。最常见的用例是当我更新文件所在的工作副本时。
我怎样才能实现这个目标?
答案1
在你的~/.vimrc
:
set autoread
答案2
答案3
需要时可以从 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 一样。