答案1
异步运行 Vimscript在同一个 Vim 实例中确实是不可能的,而且你很有可能首先在 Neovim 中看到这个功能。
也就是说,你可以异步执行外部命令,并向当前 Vim 实例反馈信息。
- 一种简单的方法是轮询外部文件(由外部命令用其结果填充)。这可以通过
autocmd CursorHold
或从 的评估来完成'statusline'
(但不要太频繁,以免拖累编辑)。 - 外部脚本还可以通过其客户端服务器功能(参见
:help new-vim-server
)。您必须将其传递v:servername
给脚本,然后通过回调vim --servername {name} --remove-expr
。注意:在 Unix 上,此功能需要 X 服务器,因此使用此方法会限制适用性。 - 这vim-misc 插件在第二个 Vim 实例中将后者实现为 Vimscript 评估;这尽可能接近异步 Vimscript 评估。