在emacs內部編譯程序的最佳方法是什麼?我目前正在打開一個單獨的緩衝區,使用C-x 3
並使用M-x eshell
在其中運行eshell,然後直接調用make或clang;大部分時間我都設置了Makefile。從Emacs內部編譯程序?
運行編譯過程使用M-x compile
與運行make inside eshell有沒有什麼優勢?任何其他的方式來做到這一點,這些有什麼優點/缺點?
在emacs內部編譯程序的最佳方法是什麼?我目前正在打開一個單獨的緩衝區,使用C-x 3
並使用M-x eshell
在其中運行eshell,然後直接調用make或clang;大部分時間我都設置了Makefile。從Emacs內部編譯程序?
運行編譯過程使用M-x compile
與運行make inside eshell有沒有什麼優勢?任何其他的方式來做到這一點,這些有什麼優點/缺點?
最簡單的方法是使用Emacs內置的compile
命令。 M-x compile
應該會很好。然後,您可以編輯將要運行的命令(默認爲make -k
),然後按回車鍵以運行編譯。然後Emacs將解析輸出,如果發現任何錯誤,他們將鏈接到源文件,以便您可以在緩衝區中打開它們。
關於它陽性是:
M-n
和M-p
滾動通過錯誤消息大多數這些特徵由compilation-minor-mode
次要模式提供儘管不是實際的編譯命令和緩衝區。在eshell
中運行編譯命令後,通過將次要模式設置爲compilation-minor-mode
,您可能會得到類似的結果。
+1。我可以感受到我的'C-x反引號'和'TAB'反射... – ldav1s
我個人更喜歡跑make
或任何命令,您使用的是 一個multi-term 由於以下原因中編譯:
它就像的Mxcompile
RET如果激活 compilation-shell-minor-mode
(Mp,C-`,...)。
,但你可以,很明顯,使用其他命令,如
mkdir build
cd build
./configure --with-another-option
當然你也可以從Emacs中做到這一點,但我更喜歡這種東西的外殼 互動。
和海事組織的的Mxcompile
的主要缺點是,如果 您正在編輯位於另一個目錄不是文件的 Makefile
那麼你必須使用的Mxcompile
在正確的 目錄然後Mxrecompile
。但是,如果你想要,說 make clean && make
,那麼你將不得不切換到正確的 目錄,做到這一點,切換回來。
但是term.el
有它自己的缺點,它使用非便攜式hacky 的方式來跟蹤當前目錄。
不熟悉eshell,但我敢肯定它不支持C-x' – carlosdc
@carlosdc eshell是在lisp中編寫的emacs內部的UNIX shell中內置的。它的行爲像任何標準的UNIX shell,但在emacs中。我只是在emacs中的一個單獨的緩衝區中打開它。 – haziz
是的,好像你錯過了許多emacs功能。 Will的答案很好地解釋了M-x編譯的特性。 – carlosdc