2016-09-25 26 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