我在Windows上使用gVim编辑我的代码(主要是C ++)。 我使用gVim中的:make编译项目,但这是一个阻塞操作,会导致我在编译完成之前无法使用gVim。 有什么方法可以异步执行:make并仍然获得将错误信息读回Vim并跳转到源代码中的好处?如果我能实时查看make进程,那就更好了。目前,:make将输出重定向到文件中,因此我看不到make的进度。
我在Windows上使用gVim编辑我的代码(主要是C ++)。 我使用gVim中的:make编译项目,但这是一个阻塞操作,会导致我在编译完成之前无法使用gVim。 有什么方法可以异步执行:make并仍然获得将错误信息读回Vim并跳转到源代码中的好处?如果我能实时查看make进程,那就更好了。目前,:make将输出重定向到文件中,因此我看不到make的进度。
我的做法是
:!gvim -c 'MyMake'
(其中MyMake是自定义命令,可以切换到适当的目录,进行make和copen 20等操作。):cfile make_result_file
:cw
or
:copen 20
达到与使用:make相同的结果
AsyncMake
命令的AsyncCommand 2.0版本。.vim/plugin
中,然后您就可以使用:AsyncMake
或:AsyncMake target
进行构建。构建完成后,错误将在您的quickfix中打开。
call <SID>Async_Impl(tool_cmd, vim_cmd)
to
call <SID>Async_Impl(tool_cmd, vim_cmd)
call <SID>Async_Impl("tail -f ". temp_file, "")
这将会把所有的异步命令都改为在第二个命令窗口中打开输出。
printf
与let tool_cmd = a:command . "| tee ". temp_file
。但是,您可能需要在tee之前添加2>&1
才能查看任何stderr输出。 - idbrii
:!start make
我会使用您操作系统内置的方法来运行后台任务。
在 Windows 上,尝试键入
:!start make
在 Linux / Mac OS X 上,请尝试
:!make > /dev/null 2>&1 &
除非您安装了最新版本的Vim(v7.4和许多补丁,或者仅仅是Vim 8),否则您将无法在Vim中看到make的进度。现在有一些插件已经利用了它。我的BuildToolsWrapper就是其中之一。我已经在Linux和Windows上成功测试过。
在那之前,我们需要其他技巧。我记得Marc Weber的插件能够在Windows上模拟后台编译。还有一些其他的插件。我让其他人列出它们。