正在运行:在后台使用gVim制作

Amj*_*ith 34 vim compilation

我在windows中使用gVim来编辑我的代码(主要是C++).我使用:make in gVim来编译项目,但这是一个阻塞操作,这阻止我在编译完成之前使用gVim.我该怎么做:异步制作并仍然可以将错误读回Vim并跳转到源代码中的错误?如果我实时看到制作过程,奖励积分.现在:make将输出重定向到一个文件,因此我无法看到make的进度.

Myk*_*yev 18

我做的是

:!gvim -c 'MyMake'
Run Code Online (Sandbox Code Playgroud)

(其中MyMake是自定义命令,可以切换到适当的dir,make和copen 20.)

当我在另一个窗口进行构建时,我正在完成我的工作.

其他选项:
您可以从shell或vim(:!make&)中将make progress重定向到某个文件.然后通过使用

:cfile make_result_file

:cw
 or
:copen 20 
Run Code Online (Sandbox Code Playgroud)

获得与您使用相同的结果:make


idb*_*rii 7

看看我的AsyncCommand插件.它只包含执行某些操作所需的vim语法并使用--remote加载它.我上传了包含AsyncMake命令的AsyncCommand 2.0 .

将脚本添加到您的脚本中.vim/plugin,您可以使用:AsyncMake或构建脚本:AsyncMake target.完成后,错误将在您的quickfix中打开.


回应评论以获得更易读的代码:

要看到在Windows上生成结果,如果你有Cygwin的/unxutils /东西与尾部在你的路径,然后在asynccommand.vim,变化

call <SID>Async_Impl(tool_cmd, vim_cmd)
Run Code Online (Sandbox Code Playgroud)

call <SID>Async_Impl(tool_cmd, vim_cmd)
call <SID>Async_Impl("tail -f ". temp_file, "")
Run Code Online (Sandbox Code Playgroud)

这应该更改所有异步命令以打开输出的第二个命令窗口.


Roo*_*ook 5

尝试使用

:!start make
Run Code Online (Sandbox Code Playgroud)

(关于":help!start"的更多信息) - 这样vim就不必等待过程开始完成 - 你可以继续编辑).

  • :!如果您只是想生成一个make过程,那么make make工作正常.我希望使用gvim的in build功能,它将错误读入vim,你可以通过双击它跳转到源代码中的错误. (5认同)