运行:在后台运行gVim

我在窗口中使用gVim来编辑我的代码(主要是C ++)。 我使用:在gVim编译项目,但这是一个阻止操作,这阻止我使用gVim,直到编译完成。 我该怎么做:asynchronous制作,仍然可以获得将错误读回Vim并跳转到源代码中的错误的好处? 奖励积分,如果我看到实时制作过程。 现在:将输出redirect到一个文件,因此我不能看到make的进度。

我做的是

:!gvim -c 'MyMake' 

(其中MyMake是自定义命令,可以切换到适当的目录,使,并copen 20.)

而我正在做我的工作,而构build在另一个窗口。

其他选项:
您可以将进度redirect到shell或vim(:!make&)中的某个文件。 然后通过使用

 :cfile make_result_file :cw or :copen 20 

达到与使用make相同的结果

看看@ tpope的dispatch.vim

https://github.com/tpope/vim-dispatch#readme

video预告片: http : //vimeo.com/63116209

看看我的AsyncCommand插件。 它只是包装执行某些东西所需的vim语法,并使用–remote加载它。 我已经上传了包含AsyncMake命令的AsyncCommand 2.0。

将脚本添加到.vim/plugin然后可以使用:AsyncMake:AsyncMake target进行构build。 一旦make完成,你的quickfix将会打开错误。


响应更多可读代码的评论:

要在Windows上查看生成结果,如果您的path中有cygwin / unxutils /尾随,请在asynccommand.vim中更改

 call <SID>Async_Impl(tool_cmd, vim_cmd) 

 call <SID>Async_Impl(tool_cmd, vim_cmd) call <SID>Async_Impl("tail -f ". temp_file, "") 

这应该改变所有asynchronous命令打开第二个命令窗口与输出。

尝试使用

 :!start make 

(关于“:help!start”的更多信息) – 这样vim不需要等待进程开始完成 – 你可以继续进行编辑)。

我会用你的操作系统的内置方法来运行后台任务。

在Windows上,尝试input

 :!start make 

在Linux / Mac OS X上,请尝试

 :!make > /dev/null 2>&1 & 

除非你安装Vim(v7.4和许多补丁,或简单的Vim 8)的最新版本,否则你将无法看到make的进度(在Vim内)。 现在有一些插件被利用了。 我的BuildToolsWrapper就是其中之一。 我已经在linux和windows上成功testing过了。

在此之前,我们需要其他的技巧。 我记得Marc Weber的插件,它能够在Windows上模拟背景编辑。 还有其他几个。 我让别人列出来。

看到这个脚本