我在windows中使用gVim来编辑我的代码(主要是C++).我使用:make in gVim来编译项目,但这是一个阻塞操作,这阻止我在编译完成之前使用gVim.我该怎么做:异步制作并仍然可以将错误读回Vim并跳转到源代码中的错误?如果我实时看到制作过程,奖励积分.现在:make将输出重定向到一个文件,因此我无法看到make的进度.
我做的是
:!gvim -c 'MyMake'
(其中MyMake是自定义命令,可以切换到适当的dir,make和copen 20.)
当我在另一个窗口进行构建时,我正在完成我的工作.
其他选项:
您可以从shell或vim(:!make&)中将make progress重定向到某个文件.然后通过使用
:cfile make_result_file :cw or :copen 20
获得与您使用相同的结果:make
看看@ tpope的dispatch.vim
https://github.com/tpope/vim-dispatch#readme
视频预告片:http://vimeo.com/63116209
看看我的AsyncCommand插件.它只包含执行某些操作所需的vim语法并使用--remote加载它.我上传了包含AsyncMake
命令的AsyncCommand 2.0 .
将脚本添加到您的脚本中.vim/plugin
,您可以使用:AsyncMake
或构建脚本:AsyncMake target
.完成后,错误将在您的quickfix中打开.
回应评论以获得更易读的代码:
要看到在Windows上生成结果,如果你有Cygwin的/unxutils /东西与尾部在你的路径,然后在asynccommand.vim,变化
callAsync_Impl(tool_cmd, vim_cmd)
至
callAsync_Impl(tool_cmd, vim_cmd) call Async_Impl("tail -f ". temp_file, "")
这应该更改所有异步命令以打开输出的第二个命令窗口.
尝试使用
:!start make
(关于":help!start"的更多信息) - 这样vim就不必等待过程开始完成 - 你可以继续编辑).