我可以在后台“正确”运行 vimscript 吗?

我可以在后台“正确”运行 vimscript 吗?

我想在后台运行一段 vim 脚本(最好在 Windows 上,尽管如果它只在 *nix 上运行,那也可以)

这个想法如下:

  • 用户调用 vimscript 函数(可能通过快捷键)
  • 状态栏更新以表明进程正在运行
  • 后台脚本(bash 或 Windows 批处理文件)启动 - 我可以继续工作
  • 过了一会儿(比如说几秒钟) - 脚本完成并且状态栏更新。

如果我只运行带有“&”符号的脚本,那么脚本将在后台执行,状态栏会立即更新以完成。如果我运行不带“&”符号的脚本,那么它会阻止我执行任何其他操作,直到脚本完成。

这表明这是不可能的,但我想在这里问一下。

答案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 评估。

相关内容