每次在Windows 10 (Vim 8.2)下将文件保存到Vim中时,我都试图获得以下信息:
现在,我可以使用autocmd自动格式化文件,方法是在.vimrc中添加以下内容
autocmd BufWritePost * silent! !start /min Autoformat.bat <afile>问题是没有在屏幕上更新文件内容(我仍然看到未格式化的文件)。我必须离开焦点,回来看一个提示,以重新加载文件。需要刷新文件的内容是什么?
经过一些研究后,我已经尝试了以下几点:
autocmd BufWritePost * !redraw
autocmd BufWritePost * !edit (手动操作)autocmd BufWritePost * !edit但这似乎行不通。
注意:silent! !start /min使恼人的命令提示符沉默,该命令提示符用于每次保存(在Windows上)闪现。
在Windows上,以下内容对我有用:
set autoread
autocmd BufWritePost * silent! !C:\Users\epoirier\Documents\BufWritePost.bat <afile>
autocmd BufWritePost * redraw!我仍然看到控制台闪烁了(不到)一秒,但我可以接受,因为Vim重新加载文件自动,我可以继续工作。
发布于 2020-10-17 15:13:25
现在无法在Windows 10上测试这一点,但在Linux上,我正在尝试一个类似的设置:
autocmd BufWritePost * silent! !start /min Autoformat.bat <afile>
autocmd BufWritePost * edit
autocmd BufWritePost * redraw!文件重新加载是用edit (正如您已经发现的)触发的,而没有先于!
!执行一个shell命令,但是edit是一个vim命令,在命令之前我们不需要! (同样的事情也适用于redraw)。
redraw!是必要的,因为silent can mess up the screen用于外部命令时。
另一种(我认为更适合)重新加载文件的解决方案是使用autoread选项,而不是触发edit。来自:help autoread
'autoread''ar'
当检测到一个文件在Vim之外被更改,并且它在Vim中没有被更改时,自动再读取它。
.vimrc上的行变成:
set autoread
autocmd BufWritePost * silent! !start /min Autoformat.bat <afile>
autocmd BufWritePost * redraw!https://stackoverflow.com/questions/64395191
复制相似问题