如何编辑.emacs文件以始终在终端模式下启动Emacs?

19

我喜欢使用Emacs作为我的编辑器选择,由于我经常在终端上工作,因此我总是以

emacs -nw

我希望能够在终端中运行emacs,而不是在窗口中运行。 我的问题是 - 如何编辑我的.emacs文件,以便这是默认行为?


你使用的是哪个操作系统?许多Linux发行版都有一个名为emacs-nox或类似名称的软件包。这个软件包没有图形支持,因此始终在终端中运行。 - KeithB
我正在使用Ubuntu 10.10,如果有帮助的话。 - templatetypedef
有趣的是,在Mac OSX上,对我来说emacs总是意味着emacs -nw。 - n_x_l
4个回答

29

你不能在 .emacs 文件中这样做。在解析该文件时,"选择"的 emacs 二进制文件已经在运行了。

像其中一位评论者建议的那样,你可以安装 emacs-nox 包,或在你的 shell 中创建一个别名,使得 "emacs" 总是被视为 "emacs -nw"。

Randy


1
+1 对别名建议的支持 - 在这种情况下绝对是正确的选择。 - cristobalito
FreeBSD上的emacs-nox11-*。正是我在寻找的,谢谢! - Kim Gräsman

20

我在使用bash的别名来代替.emacs实现那个功能。
把这行代码添加到你的~/.bashrc文件中。

alias emacs='emacs -nw'

3

有一个通用的简单方法来解决这个问题,与emacs无关,并且适用于任何可以选择在控制台还是X中运行的程序:

unset DISPLAY

当然,您可能不希望将其放在配置文件中以全局应用于所有shell会话,因此,如果您想仅将其应用于emacs,则可以像这样从命令行调用它:
DISPLAY= emacs

注意空格!!! 如果你省略了空格,那么它的意思是将DISPLAY设置为emacs而不是将DISPLAY设置为空... 这个命令是以下命令的简写:

DISPLAY=; emacs

所以,要么从命令行使用上述内容,要么将其放在一个包装脚本中,该脚本看起来应该像这样:

#!/bin/bash
unset DISPLAY
exec emacs

我推荐使用exec,因为它将用emacs替换您的包装脚本。要看两者之间的区别,请运行:
pstree -p

1
顺便问一下:如果你在X环境中运行,为什么要始终在控制台中运行emacs呢? - aculich
第三个带分号的命令与第二个命令不同。如果你添加了分号,它会在当前Shell以及Emacs子进程中将DISPLAY设置为空。没有分号它只适用于Emacs。有分号就是破坏性的。 - Thomas
你为什么要打开上亿个窗口?同时我所有的编码工作都在“screen”里完成,这与X不符。@aculich - Thomas

1
当我第一次在Windows中为emacs设置“emacs -nw”别名时,我陷入了一个困境,我认为tototoshi的解释没有起作用。然而,所需的只是重新启动终端。因此,我认为值得提到的是,在Windows中(至少),如果您在git bash终端中使用emacs来创建.bashrc文件并将“alias emacs ='emacs -nw'”添加到其中(如tototoshi所述),则必须关闭并重新打开终端才能使其起作用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接