我是 Emacs 的新手,我想使用 eshell 在单独的窗口中执行 C 程序(顶部的窗口带有 C 文件,底部的窗口带有 eshell;来回切换用 C-x o)。不幸的是,我必须在 eshell 中编写 gcc program.c -o program
然后 ./program
。
在我的 .zshrc 中我有一个别名
c () {
gcc $1 && ./a.out
}
这意味着我可以在普通终端中运行 c program.c
,将两步合二为一。但当然,eshell 不会读取 .zshrc。那么我该如何编写一个 elisp 文件来完成同样的事情呢?
最佳答案
这是我多年来一直在做的事情。添加一个 Emacs 标题行,如下例所示:
/* -*- mode: C++; compile-command: "gcc -s -O3 termcolor.c -o termcolor; ./termcolor" -*- */
#include <stdio.h>
int main (void) {
printf("[0;34;41mHello world![m\n");
printf("[5;34;41mHello world![m\n");
printf("[1;5;34;41mHello world![m\n");
return 0;
}
我将 C-x c
设置为调用 M-x compile
的别名(至少在 C++ 模式下,我也在这里设置了它,尽管它在技术上是一个 C 文件),所以它调用此处指定的 compile-command
...其中包括执行。
很快我就明白了
-*- mode: compilation; default-directory: "/tmp/" -*-
Compilation started at Sat Dec 24 13:22:23
gcc -s -O3 termcolor.c -o termcolor; ./termcolor
[0;34;41mHello world![m
[5;34;41mHello world![m
[1;5;34;41mHello world![m
Compilation finished at Sat Dec 24 13:22:24
在编译 缓冲区中。对我来说效果很好。
关于c - 在 Emacs 中单步运行和执行 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41315982/