Vim 具有执行程序的内置方式,即:!start foo
适用于 Windows 和:!bar &
Unix。但是,我遇到的问题是它们从 Vim 中窃取了焦点。我想启动我的构建和测试脚本,虽然它工作并在其命令窗口中显示输出,但不必手动切换回 GVim。
我想到了 3 种可能的解决方案:
- 使用 Auto-It/AutoHotkey 将焦点设置回 Gvim。不幸的是,这只适用于 Windows,而且很脆弱。
- 让另一个进程监视我的源代码,并让该进程在源代码更改时自动启动脚本。(另一个创建新窗口的进程不会窃取焦点)。这有点花哨,因为您需要推迟写入文件,直到您想要启动脚本,并且有时如果您想重新测试,即使源代码中没有任何更改,也会编写一个无用的更改。
- 使用客户端-服务器架构,Vim 通过套接字或类似的方式发送命令。这实际上是我的首选解决方案,如果有任何现有的跨平台方式来做到这一点。(不过,我宁愿不为此运行额外的 GVim 实例。)
那么有什么好的方法可以做到这一点呢?我已经尝试过AsyncCommander但不幸的是它也窃取了焦点。