我一直在使用vim集成make命令來幫助我構建,修復,重複工作循環。我們正在轉向一個新的構建系統,我可以輕鬆地使用makeprg進行更改。如何在vim中設置makeprg當您的編譯系統編譯代碼的複製版本
問題是新的構建系統在構建之前將源代碼複製到沙箱位置,所以當我收到編譯錯誤時,vim會打開復制的文件。我最終更改了這個複製的文件,而不是主代碼路徑中的實際文件。
是否可以通過某種方式解決這個問題告訴vim我的代碼庫路徑是什麼?
我一直在使用vim集成make命令來幫助我構建,修復,重複工作循環。我們正在轉向一個新的構建系統,我可以輕鬆地使用makeprg進行更改。如何在vim中設置makeprg當您的編譯系統編譯代碼的複製版本
問題是新的構建系統在構建之前將源代碼複製到沙箱位置,所以當我收到編譯錯誤時,vim會打開復制的文件。我最終更改了這個複製的文件,而不是主代碼路徑中的實際文件。
是否可以通過某種方式解決這個問題告訴vim我的代碼庫路徑是什麼?
至少有三種策略可以用來解決這個問題,不幸的是它們都會涉及更多的工作,而不僅僅是告訴vim一個「代碼基路徑」。在選擇之前,我建議您閱讀:help make_makeprg
以瞭解:make
過程中的「底層」。
寫一個shell/perl的/紅寶石/不管腳本,從您的構建過程中過濾輸出和重寫文件名從/sandbox/src/blah.c
到src/blah.c
或/sandbox/src
爲適當src
。然後更改makeprg
以包含運行時的過濾程序make
(在您的.vimrc
中,添加此項::set makeprg=make\ \\\|\ filter
)。這可能很容易做到,但根據您使用的確切構建系統可能會變得更加棘手。
更改errorformat
(請參閱:help errorformat
)爲您剝離沙箱前綴。這在某些情況下可能無法實現,具體取決於構建系統的確切輸出格式。
添加一個QuickFixCmdPost
自動命令,它將在開始使用:cnext
和朋友之前,在quickfix窗口中重寫文件路徑。如果你之前沒有使用Vim的自動命令功能,我會先嚐試其他兩種策略。他們是強大的,非常有用,但他們需要一些練習才能正確。