2011-03-11 13 views
2

我一直在使用vim集成make命令來幫助我構建,修復,重複工作循環。我們正在轉向一個新的構建系統,我可以輕鬆地使用makeprg進行更改。如何在vim中設置makeprg當您的編譯系統編譯代碼的複製版本

問題是新的構建系統在構建之前將源代碼複製到沙箱位置,所以當我收到編譯錯誤時,vim會打開復制的文件。我最終更改了這個複製的文件,而不是主代碼路徑中的實際文件。

是否可以通過某種方式解決這個問題告訴vim我的代碼庫路徑是什麼?

回答

4

至少有三種策略可以用來解決這個問題,不幸的是它們都會涉及更多的工作,而不僅僅是告訴vim一個「代碼基路徑」。在選擇之前,我建議您閱讀:help make_makeprg以瞭解:make過程中的「底層」。

  1. 寫一個shell/perl的/紅寶石/不管腳本,從您的構建過程中過濾輸出和重寫文件名從/sandbox/src/blah.csrc/blah.c/sandbox/src爲適當src。然後更改makeprg以包含運行時的過濾程序make(在您的.vimrc中,添加此項::set makeprg=make\ \\\|\ filter)。這可能很容易做到,但根據您使用的確切構建系統可能會變得更加棘手。

  2. 更改errorformat(請參閱:help errorformat)爲您剝離沙箱前綴。這在某些情況下可能無法實現,具體取決於構建系統的確切輸出格式。

  3. 添加一個QuickFixCmdPost自動命令,它將在開始使用:cnext和朋友之前,在quickfix窗口中重寫文件路徑。如果你之前沒有使用Vim的自動命令功能,我會先嚐試其他兩種策略。他們是強大的,非常有用,但他們需要一些練習才能正確。