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

Posted

技术标签:

【中文标题】.emacs 编辑以始终在终端模式下启动 Emacs?【英文标题】:.emacs Edit to Always Start Emacs in Terminal Mode? 【发布时间】:2011-01-05 20:24:40 【问题描述】:

我使用 emacs 作为我的首选编辑器,由于我在终端中做很多工作,所以我总是将 emacs 运行为

emacs -nw

使其在终端而不是窗口中运行。

我只想运行emacs 并让它知道它应该在终端中运行。我的问题是 - 我如何编辑我的 .emacs 文件以使其成为默认行为?

【问题讨论】:

您使用的是什么操作系统?许多 linux 发行版都有一个 emacs-nox 包,或类似名称的东西。这是在没有图形支持的情况下编译的,因此将始终在终端中运行。 我在 Ubuntu 10.10 上,如果有帮助的话。 有趣的是,在 Mac OSX 上,emacs 对我来说总是意味着 emacs -nw。 【参考方案1】:

您不能在 .emacs 文件中执行此操作。在解析该文件时,“选择的”emacs 二进制文件已经在运行。

您可以按照一位评论者的建议安装 emacs-nox 软件包,或者在您的 shell 中创建一个别名,以便始终将“emacs”视为“emacs -nw”。

兰迪

【讨论】:

+1 用于别名建议 - 在这种情况下要走的路 感谢您的详细解答!我会试试看。 emacs-nox11-* 在 FreeBSD 上。正是我想要的,谢谢!【参考方案2】:

我正在使用 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

【讨论】:

btw:我很好奇——如果你在 X 环境中运行,为什么你总是想在控制台中运行 emacs? 第三个带分号的命令与第二个命令相同。如果添加分号,它将在当前 shell 以及 emacs 子进程中将 DISPLAY 设置为空。如果没有分号,它仅适用于 emacs。使用分号是破坏性的。 为什么要打开十亿个窗口?此外,我在“屏幕”内完成所有编码工作,这对 X 没有意义。@aculich【参考方案4】:

当我第一次在 Windows 中为 emacs 设置“emacs -nw”别名时,我陷入了一种我认为 tototoshi 的解释不起作用的情况。然而,所需要的只是重新启动我的终端。因此,我认为值得一提的是,在 Windows 中(至少)如果您在 git bash 终端中使用 emacs 来创建 .bashrc 文件并向其中添加“alias emacs='emacs -nw”(正如 tototoshi 提到的那样),您有关闭并重新打开您的终端以使其正常工作。

【讨论】:

以上是关于.emacs 编辑以始终在终端模式下启动 Emacs?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 OSX 的命令行启动 GUI Emacs?

ubuntu14安装emacs

Emacs服务器模式以及emacsclient配置

高通平台emac驱动设备树分析

使用R会话和并排窗口启动Emacs?

emacs使用本地emacs server模式打开远程文件