1

由于需要一些复杂的环境变量,我选择通过 GNU screen 运行 Make。使用 screen vim 插件,我的 .vimrc 中有以下设置:

map <Leader>mm :call ScreenShellSend("cd ".expand("%:p:h")." && make 2>&1 | tee /path/to/errorfile") <CR>

粗略翻译,这将通过现有的屏幕会话在当前工作目录中运行 make,并预设所有必需的环境变量。然后我可以在单独的终端窗口中看到该命令的输出。

我的问题是,假设我将 make 的结果输出到文本文件,我如何告诉自动化 vim make 过程:

A.) 设置 make 使用 vimscript 函数,即调用 SreenShellSend() 而不是外部程序。

B.) 将错误文件设置为 /path/to/errorfile

4

1 回答 1

0

不幸的是,你不能设置'makeprg'为 Vim 函数或命令,它必须是一个 shell 程序。(我希望有一个增强功能,它将以冒号开头的命令视为 Vim 命令,类似于 中的:help异常'keywordprg',但还没有实现这一点。)

不过,有一些解决方法。一种是使用vim --remote-sendas'makeprg'并使用这个其他临时 Vim 实例来回调原始 Vim。我所做的是:make通过cmdalias.vim 插件覆盖这些缓冲区的命令。然后那个别名只是:call我的功能。

一旦你能够调用一个 Vim 函数,设置'errorfile'它只是放置一个函数包装器ScreenShellSend()并在那里设置它的问题。

于 2013-01-24T08:18:07.153 回答