2013-01-23 74 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()左右放置一個函數包裝並將其設置在那裏。