#1 楼
您可以在不指定文件名的情况下使用:edit
命令来重新加载当前文件。如果对文件进行了修改,则可以使用:edit!
强制重新加载当前文件(您将丢失修改)。
命令
:edit
可以是由:e
缩写。因此,可以通过:e!
完成强制编辑
评论
“!”在绊倒我,但现在很明显。
–twan163
2014年8月8日在11:41
注意:通常缩写为:e!。
–StéphaneChazelas
2014年8月8日在12:07
@StephaneChazelas:是的,没错:) @ twan163:而不是:edit和:edit!您可以使用:e和:e!分别。
– Thushi
2014年8月8日在12:08
丢失修改,是和否。至关重要的是,您仍然可以撤消:e!。
– Gerrit
2015年9月10日在9:22
另外,如果要重新加载所有缓冲区,请运行::bufdo e
–pkout
16年11月4日在21:43
#2 楼
除了使用:edit
手动刷新文件之外,您还可以放入~/.vimrc
:set autoread
以使Vim自动刷新未由Vim编辑的任何文件。另请参阅
:checktime
。评论
买方要当心-如果您正在使用新代码和git pull,请注意,您可能会无意间在屏幕上丢失未保存的更改。
– 4Z4T4R
16年6月16日在17:36
@toszter不,Vim只会刷新未更改的缓冲区。如果发生更改,仍然会有一个查询:保留还是加载?
– Ingo Karkat
16年6月17日在7:28
N.B.自动读取并不能完全自动工作。您要么必须使用gvim,要么运行外部命令。
– Sparhawk
16-09-30在1:37
那些在tmux内部使用vim的用户可以通过使用github.com/tmux-plugins/vim-tmux-focus-events获得焦点事件。否则,除非您以某种方式调用:checktime,否则自动读取将无法在终端中提供帮助
–卡尔·巴特尔(Karl Bartel)
17年1月3日,15:50
光标停止移动后的X秒,可以自动触发自动读取,请参见此答案。
–汤姆·黑尔
17年8月1日在6:16
#3 楼
TL; DR跳到
Wrap-up
标题以添加vimrc
线可以使您的生活更美好。 /> 检查是否在Vim之外更改了任何缓冲区。
这将检查并警告您是否最终会使用文件的两个
版本。
自动
要自动加载更改,请添加您的
:checktime
:vimrc
检测到文件已在Vim外部进行了更改,并且
未在Vim内部进行过更改,请再次自动读取。
删除文件后,此操作不会完成。
这个答案增加了一个警告:
自动读取不会重新加载文件,除非您执行类似运行外部命令的操作(例如
set autoread
或!ls
等)继续阅读以获取解决方案。
当光标停止移动时触发
添加到您的
!sh
中:au CursorHold,CursorHoldI * checktime
默认情况下,光标保持静止4秒钟后会触发CursorHold,并可通过updatetime对其进行配置。
在缓冲区更改或终端焦点触发/>
将以下内容添加到您的
vimrc
中,以便在vim内更改缓冲区时触发vimrc
: 要使
autoread
(见上文)在普通的vim中工作,请在终端仿真器(Xterm,tmux等)内部安装插件:vim-tmux-focus-events
在1.9以上的tmux版本上,您需要添加
FocusGained
:au FocusGained,BufEnter * :checktime
总结
.tmux.conf
触发器也可能出现的通知。这是我的
autoread
行,用于实现上述所有功能:set -g focus-events on
感谢ErichBSchulz将我指向右边请使用
vimrc
进行操作。感谢此答案解决了cmdwin问题。
评论
优秀的帖子!感觉像其中之一应该是默认行为
–JonnyRaa
17年11月13日在10:30
谢谢你的主意!对于那些想知道命令行窗口(:h cmdwin)中的错误的人:模式检查还不够,请参阅vi.stackexchange.com/q/14315/6891。
–HalilÖzgür
1月16日6:52
@HalilÖzgür谢谢!我已经更新了我的答案以涵盖该案例(以及其他案例)。
–汤姆·黑尔
1月17日8:54
谢谢!这个答案是惊人的
– Troropio
3月24日16:36
感谢您的回答。如何调整它以刷新所有当前打开的缓冲区? (:buffdo e)
–安东·科瓦尔(Anton Koval)
7月9日17:31
评论
相关:如何一次重新加载所有缓冲区?在Vim SE总结:到目前为止,所有答案都是“投票”而不是“推”式的。也就是说,这些答案不是像其他软件的类似功能那样接收外部文件更改事件,而是依靠vim主动轮询文件更改,无论是手动操作还是由用户操作或计时器触发。最终结果是您不会立即在屏幕上看到刷新。
工作解决方案位于stackoverflow.com/a/53860166/4814774