2013-01-23 60 views
1

由于需要一些复杂的环境变量,我选择了通过GNU屏幕运行Make。使用屏幕vim的插件,我有以下安装在我的.vimrc:vim运行通过屏幕

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

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

我的问题是,假设我让输出到一个文本文件,我怎么告诉自动化VIM的结果使得过程:

A.)定妆使用vim脚本函数,即调用SreenShellSend( )而不是外部程序。

B.)错误文件设置为/路径/到/错误文件

+0

我不知道发送远程命令来屏幕回答这个问题,但请查看Vim for'makeprg'的帮助。如果您可以构建等效于您的ScreenShellSend()命令的命令行,则可以将'makeprg'设置为该命令行。然后'设置errorfile =/path/to/errorfile',你应该很好。 –

回答

0

不幸的是,你不能设置'makeprg'到Vim功能或命令,它必须是一个shell程序。 (我想为把命令开始用冒号作为Vim的命令,类似于'keywordprg':help异常增强,但还没有来到我身边来实现这一点。)

有解决方法,虽然。一个是使用vim --remote-send作为'makeprg',并使用这个其他临时Vim实例回调原始Vim。我所做的是通过cmdalias.vim plugin覆盖这些缓冲区的:make命令。那别名然后简单地:call是我的功能。

一旦你能够调用Vim函数,设置'errorfile'只需要在ScreenShellSend()左右放置一个函数包装并将其设置在那里。