2016-09-25 47 views
1

我一直從終端打開emacs,但每次我想編譯我的c程序,我必須先退出emacs,在終端上編譯它,然後再次打開emacs再編輯一些。如何在同一時間運行emacs和終端?

有沒有更簡單的方法來做到這一點,所以我可以保持emacs打開,同時也編譯終端上的東西?

我知道這事做與進入殼模式,但我不是太熟悉或編輯init文件作爲即時通訊真正的新Emacs和仍然設法得到它

任何幫助的竅門表示感謝,謝謝!

+0

打開兩個終端將是一個簡單的方法。 – immibis

+0

你可以輸入'emacs file.c&'如果你正在使用Linux,或者你可以用'Mx shell'的emacs來使用終端。 –

+0

你可以用'Cz'把emacs放到後臺,然後用' %emacs'。使用X-aware版本的Emacs是另一種選擇。 – choroba

回答

3

要在Emacs中編譯您的程序,請鍵入M-x compile並輸入編譯命令。作爲獎勵,輸出中的任何錯誤或警告都會鏈接到源代碼中的相應行。

一旦你的程序被編譯,有幾種不同的方式來運行它。如果它是一個非交互式程序,您可能會發現M-!(用於運行shell命令,等待它完成並將其輸出顯示在緩衝區中)就足夠了。否則,你可能想在Emacs裏運行一個shell。你可以用M-x eshell來做到這一點。 (有些人喜歡M-x shell;嘗試兩個,看看你喜歡什麼)


另外,如果你想暫時離開Emacs和返回到終端,您可以鍵入C-z把Emacs的背景。要從外殼返回到Emacs,請鍵入%fg(對於「前景」)。要檢查Emacs當前是否在後臺運行,請鍵入jobs

+0

謝謝!這是非常有幫助的,從現在開始不適合這樣做:) – helloworld

3

或者,它可以直接運行M-x ansi-term以在Emacs緩衝區內運行終端。在Emacs中有一個工作的交互式終端很不錯,但也可以使用普通的Emacs密鑰綁定來瀏覽終端輸出。

我使用this package來確保我的所有環境變量都已加載。

0

一些操作說明:

當我編輯在Emacs和有此需要的終端的東西,我的通常的程序是爲了能夠向垂直分割「CX 2」或水平「CX 3」與實際窗口並排打開終端仿真器('Mx eshell'或'Mx shell')。從這裏開始可以根據需要前後移動'C-x o'或'C-u C-x o'。這允許在窗口附近可見的東西正在運行時繼續編輯。

在極少數情況下,這些仿真器不能像真正的OS終端那樣工作,我們可以拆分並使用本地事物,而無需層或仿真「C-x term RET RET」。不幸的是,在後一種情況下,無法在框架窗口之間循環(使用'C-x o')。在這裏,exit命令需要能夠使用emacs正常運行。

+0

您不需要退出終端進程來與Emacs交互。只需用'C-c C-j'切換到'term-line-mode'。用'C-c C-k'切換回'term-char-mode',以恢復直接發送(最)輸入到低級進程。你也可以(在char模式下)使用'C-c'來代替'C-x'前綴,所以你的具體例子只需使用'C-c o'。這在手冊中指出:'C-h i g(emacs)術語模式' – phils

+0

你是對的。這是一個很好的提示。事實上,'C-C C-j/C-C C-k'在這種情況下非常有用。我通常使用類似'M-:(info「(emacs)的主題」)'跳轉到已知主題,但我發現您的組合'Chig(emacs)主題'更快更好,特別是因爲它有命令完成。 – AMFVargas