#1 楼
所需的命令是:e
(:edit
的缩写)。如果使用:edit!
,它将丢弃本地更改并重新加载。也可以让vim在vimrc中使用
set autoread
自动执行此操作。评论
有关自动阅读的注意事项和解决方案,请参阅此答案。
–汤姆·黑尔
17年8月1日在3:58
要对所有缓冲区执行此操作,请使用:bufdo:e或:bufdo:e!
–亚伦·H。
18年11月13日在21:50
@AaronH。谢谢你!我通常一次打开数百个缓冲区,当切换分支时,我通常只是关闭vim并重新启动以刷新带有新内容的所有缓冲区。这将是一个重要的节省时间!
– g19fanatic
18/12/13在13:42
@AaronH。第二个:是可选的::bufdo e将起作用。
– JoL
19年4月26日在1:07
nnoremap
–rodvlopes
20-3-27在23:28
#2 楼
在许多情况下,set autoread
无法正常工作,因为此答案说明:除非您执行类似运行外部命令的操作(例如
!ls
或!sh
等),否则自动读取不会重新加载文件焦点事件将触发
autoread
,但是除非使用gvim
,否则不会捕获这些事件。因此,如果在终端窗口或tmux中运行普通vim
,请安装vim-tmux-focus-events插件。
在tmux版本> 1.9上,您需要添加
.tmux.conf
:set -g focus-events on
为了获得更多好处,在vim内部更改缓冲区时,在
vimrc
中添加以下内容将触发autoread
:au FocusGained,BufEnter * :checktime
评论
多年来一直困扰着我。感谢您提供彻底的解决方案! 💯😄
–内森·朗(Nathan Long)
18年8月7日在9:54
#3 楼
如果您曾经运行过Vim修改当前缓冲区的外部命令,则可能已经注意到,由于对磁盘进行了更改,它会提示您重新加载文件。您实际上可以使用:checktime
命令来调用此提示。#4 楼
改善autoread
的好插件但自上次从vim写入以来,未在缓冲区中进行修改。这使在vim中打开的文件可以使用其他应用程序进行编辑并保存。返回vim后,只要您自上次更改以来未修改过
文件,该文件就会自动更新为
以反映磁盘上所做的更改,就像您按:e
手动。
#5 楼
我遇到的问题是查看文件的内容,在外部更新文件,显示更改的文件以及可以在需要时进行编辑的选项。我受此答案启发,使用Vim服务器/远程命令行选项解决了该问题。使用以下命令,可以通过外部命令重新加载文件。首先,在启动服务器实例时,用Vim打开有问题的文件。
通过
echo "Curiouser and curiouser" >> /tmp/alice.log
。必要时,向服务器实例发送命令以重新加载文件。该命令将快速完成,并且不会生成新的编辑器。消息将会出现)。对于这种情况,必须做出决定:将其保留并保留在Vim中,或者放弃本地更改并强制重新加载。但是,可以使用Bash的--remote-send
/ for
或在Linux / Unix中使用hacker的单线命令将该命令绑定到一个简单的循环: ,我确信类似的事情也可以在PowerShell中实现。在Linux / Unix上,事件驱动方法可以通过侦听文件系统事件来实现,例如inotify库,如果您不使用太疯狂的文件系统。我个人非常喜欢使用entr工具,该工具似乎已包含在主要的Linux发行版中。然后我得到:
vim --servername JABBERWOCKY /tmp/alice.log
评论
“比较缓冲区与保存的版本nnoremap gd:DiffSaved如果您已安装vim-faq,则可以在此处获得脱机答案::h vim-faq并搜索/ reload。难记的标签是:h faq-5.8。