Vim有一种执行程序的内置方式,即Windows的:!start foo
和Unix的:!bar &
。但是,我遇到的问题是他们从Vim那里抢走了焦点。我想推出我的版本和版本测试脚本,当它在其命令窗口中工作和显示输出时,永远不必手动切换回GVim。
我想到了3种可能的解决方案:
那么这样做的好方法是什么?我试过AsyncCommander,但不幸的是它也抢走了焦点。
答案 0 :(得分:3)
当我没有使用像sbt
这样的好的构建系统来监视源代码并为我重新构建/重新测试时,我倾向于想出这样的黑客:
:map <F9> :!touch and-go<CR><CR>
此处点击F9
更新文件。选择您喜欢的任何键绑定。
(当然,对于vim的插入模式,你也可以对imap
做同样的事情。)
然后所有人都需要一个shell脚本来监视这个文件并执行 用于构建/测试项目的命令。在unix上,我只是这样做:
while stat -c "%Y" and-go; do sleep 1; done |
stdbuf -i0 -o0 uniq -c |
while read l; do
echo build...; # Your build/test execution commands here.
done
在一个单独的窗口中运行它会很整洁,因为你的vim / gvim窗口将始终保持它的焦点,而你只是继续点击F9
(或其他)并浏览另一个窗口以查看你的构建方式去了。
如果您要编写Windows批处理脚本(或者PowerShell,我不知道)的版本,那么您应该很高兴。
答案 1 :(得分:1)
我认为这应该有效:
:silent! !cmd /c start /b dir
此外,start.exe
可以选择启动最小化而不是使用共享/后台控制台。
当然,dir
将被替换:)