运行:在后台运行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上模拟背景编辑。 还有其他几个。 我让别人列出来。
看到这个脚本