来自vimdoc:
:checkt[ime] Check if any buffers were changed outside of Vim. This checks and warns you if you would end up with two versions of a file. If this is called from an autocommand, a ":global" command or is not typed the actual check is postponed until a moment the side effects (reloading the file) would be harmless.
如何在没有延迟的情况下从autocmd中使用它?
我很乐意使用vim和IDE来编辑同一个文件,我想更改其中一个文件以自动加载到另一个文件中。
这是一个可能的解决方案:
autocmd CursorHold * checktime
function! Timer()
call feedkeys("f\e")
" K_IGNORE keycode does not work after version 7.2.025)
" there are numerous other keysequences that you can use
endfunction
但由于检查时间会延迟,效果可能不会令人满意。
答案 0 :(得分:1)
正如所引用的文档所解释的那样,你不能,并且有充分的理由(重新加载可能触发其他autocmds,更改可能会混淆以下命令)。
要解决此问题,您必须保留当前:autocmd
,并以某种方式重新触发您的代码。一个想法是:autocmd BufRead
,如果缓冲区实际重新加载,它将触发。如果您需要始终重新触发,可以使用:autocmd CursorHold
(可能暂时减少'updatetime'
),或者call feedkeys(":call Stage2()\<CR>")
可能值得一试。
答案 1 :(得分:0)
我最终这样做了:
autocmd CursorHold * call Timer()
function! Timer()
checktime
call feedkeys("f\e")
endfunction
效果很好。