Emacs 是一款为 POSIX 操作系统设计的文本编辑器,可在 Linux、BSD、macOS、Windows 等平台上使用。用户喜爱 Emacs,因为它为常用但复杂的操作提供了高效的命令,并且在其周围开发了近 40 年的插件和配置技巧。
由于 Emacs 是一款古老的编辑器,其开发时间远早于现代计算机约定和术语(例如,您“访问”而不是“打开”文件,您“写入”而不是“保存”,等等),因此 Emacs 经常被视为复杂甚至神秘。然而,时间已经证明,一旦您掌握了基础知识,您将拥有一个强大、高效且极其可定制的编辑器,终身受用。
什么是 GNU Emacs?
在计算机发展的早期,根本没有文字处理器,文本编辑器也寥寥无几。文本编辑器本质上是一个没有花哨字体、页面样式或页面布局等装饰的文字处理器。
[下载 Emacs 速查表]
早期的文本编辑器非常简陋,甚至无法一次打开整个文本文档。相反,文本编辑器是一个命令,可以生成单词并将它们转储到文件中,或者在文件中查找和替换单词,或者从文件中删除行,等等。以这种方式编辑大型文档可能会很乏味,因此人们开始开发宏来执行常见的相关任务。1983 年,Richard Stallman 以editing macros(编辑宏)的名义发布了他的宏捆绑包,简称 emacs。当 Stallman 博士启动 GNU 项目时,Emacs 成为了其最成功的应用程序之一。
今天,尽管还有其他 emacsen(“emacs”的复数形式是“emacsen”),但最常见的 Emacs 版本是 GNU Emacs。
功能特性
计算机爱好者喜爱 Emacs 不仅仅是因为它恰好古老且免费。Emacs 的吸引力跨越行业和兴趣,原因如下。
易于系统资源
与现代编程编辑器相比,Emacs 相当轻量级。它曾经被认为是一个对于其功能而言异常庞大的工具,但随着现代编辑器使用 Web 浏览器引擎和 JavaScript 服务器作为其后端,“简单”的编辑器用 C 和 Lisp 编写,几乎不会对系统资源造成影响。尽管如此,它所做的不仅仅是文本编辑。
键盘绑定
学习 Emacs 可能很困难,因为它使用的键盘组合与现代计算机的方式根本不同。然而,这种看似疯狂的方式是有道理的,因为 Emacs 的构建是为了在使用方式上具有灵活性。这包括没有传统键盘的设备,以及可能无法正确传输修饰键(例如 Ctrl 和 Alt)的网络。
默认情况下,Emacs 键盘绑定主要围绕 Ctrl 和 Alt 键。在文档中,Ctrl 键表示为 C,Alt 键表示为 M(因为在 Alt 键被称为“Alt”之前,它被称为“Meta”)。当您需要同时按下 Ctrl 键和另一个键时,该操作写为例如 C-x(表示 Ctrl+X)或 C-c(Ctrl+C)。Alt/Meta 键也是如此:如果您要按下 Alt-X,则表示法为 M-x。
一些键盘绑定是多个按键的组合。例如,要打开文件,您按下 C-x 进入命令模式,然后按下 C-f 查找要打开的文件。要水平分割您的编辑窗口(在 Emacs 中称为“缓冲区”),您按下 C-x,然后按下数字 2。

Emacs 中的几乎每个操作都是一个 Lisp 函数,并且可以绑定到键盘组合。如果您想调用尚未绑定的函数,您可以将函数名称键入命令缓冲区,就像您从 Linux 终端启动应用程序一样。例如,要激活 Python 模式,您按下 M-x,然后键入 python-mode,然后按 Return(在 Emacs 表示法中是 RET)。
如果您使用的设备没有 Alt 键,您可以替换为 Esc 键,但它的行为与 Alt 键不同:您必须先按下并释放 Esc,然后再按下并释放随附的键。例如,如果您需要按下 M-x (Alt+X),要使用 Esc 键的替代方法,您首先按下并释放 Esc,然后按下并释放 X。如果您的设备没有 Alt 或 Esc 键,您可以根据需要重新映射您的键。
习惯于每个操作都是一个函数,并且任何函数都可以通过键盘快捷键组合调用的想法,是 Emacs 的主要学习曲线。起初,您可能每次想要执行任何操作时都会感到恐慌,因为即使您记住了键盘组合的第一部分,仍然有下一部分需要记住。这有点像学习弹钢琴,无论是在精神上还是在身体上。一旦键盘交互开始感觉自然,它就会解锁一种全新的与应用程序交互的方式。编辑器命令融入了将想法转化为文字的行为中,因此在生成内容和编辑内容之间没有分离。至少在我的经验中,在编辑代码和创意或个人文档时,情况确实如此。
这需要练习,但是一旦您学会了,您就永远掌握了它。
灵活
Emacs 可以在 GUI 或终端窗口中运行。GUI 使 Emacs 更容易学习,但终端版本对于系统管理员和 Web 开发人员或任何需要远程编辑文本的人来说都很重要。
Emacs 也可以用作客户端,这意味着您可以在后台启动 Emacs,然后从另一个窗口或另一台机器连接到它。
可移植
由于它是用模块化代码编写的,因此以真正最小的形式构建 Emacs,几乎没有依赖项,这使得它很容易移植到其他系统。因此,很少有计算机系统,无论是旧的还是新的,流行的还是小众的,无法运行 Emacs 或至少是 Emacs 的最小构建版本。如果您不执着于 GNU Emacs,您可以找到 极其便携的版本,它们只需要一个 C 库和终端界面。
Emacs 模式
Emacs 有 模式 的约定,这些模式本质上是插件,使 Emacs 在您在其中进行的任何活动中表现不同。例如,有 Org 模式 用于组织您的生活和 管理日历,Deft 模式 用于记笔记,Fountain 模式 用于编写剧本,Muse 用于撰写论文和文章,SES 用于电子表格,Python 模式 用于 Python 代码,Shell 脚本模式 (Sh 模式) 用于 Bash 编辑,nXML 模式 用于 XML 编辑,以及更多更多。
除了模式之外,还有为 Emacs 编写的应用程序。例如,有一个 shell 用于在运行 Emacs 的系统上运行命令,一个基于文本的文件管理器用于浏览文件,一个图像查看器,一个多媒体播放器,一个 Git 界面,一个电子邮件客户端,一个基本的插图界面用于帮助绘制流程图等等。
无论您想在 Emacs 中做什么,都可能有一个模式或软件包可以帮助您完成它(您甚至可以在其中玩俄罗斯方块)。
开源和黑客精神
如今,最具可编程性的应用程序似乎是办公电子表格。有些人没有任何编程经验,却设法设计出精巧且效果惊人的应用程序,这些应用程序是使用公式和宏构建的。
然而,电子表格可以产生的东西是有限制的,因此如果您的有用的应用程序的想法不太适合网格,那么它可能更适合作为纯文本。Emacs 只是偶然成为文本编辑器。尽管它的生命始于旨在编辑文本的有用宏的集合,但应用程序的架构始于生成 Lisp 解释器的 C 代码。这意味着 Emacs 实际上是 Lisp 代码的沙箱,这意味着如果您学习 Elisp,您可以在应用程序仍在运行时更改您正在运行的应用程序。您不必在每次更改后下载源代码或编译。您可以立即创建自己的环境,并且可以根据自己的喜好进行细微或严重的更改。
对于许多用户来说,这正是开源的体现。您可以建立在他人创建的工作之上,您可以查看影响您工作区的代码,并且可以对其进行更改。这是发现如何控制您每天使用的工具并自定义它们以使其为您工作的门户。虽然这个门户确实只对那些愿意查看 Lisp 代码(通常被认为是过时的)的人开放,但采取一种重要的文化立场很重要,在这种立场中,您期望有一种简单而即时的途径来查看您正在使用的东西的源代码,并且源代码是有文档记录和可破解的。
开始使用
如果 Emacs 听起来可以解决您的一些计算问题,那么有很多资源可以学习它。如果您使用的是 Linux 或 BSD,您可以从您的发行版的存储库或端口树安装 Emacs。在 Mac 上,您可以从 GNU Emacs 网站 下载并安装它,Windows 用户可以按照 本操作指南 进行操作。安装完成后,找到一种适合您个人学习风格的学习方式。Sacha Chua 提供了一个图文并茂的指南,我创建了一个 音频导览 和一个 入门教程。为了帮助您跟踪您所学的内容,请下载 Opensource.com 的 Emacs 速查表。
感谢 Mastodon 上的以下贡献者帮助制作此资源页面
- @lorabe @quey.org
- @vertigo @mastodon.social
- @suetanvil
- @epicmorphism @satania.space
- @CarlCravens
- @gamayun @mastodon.social
- @vk @mamot.fr
- @vu3rdd @octodon.social
- @tfb @functional.cafe
- @gnomon @mastodon.social
- @dracoMetallium @pleroma.soykaf.com
- @technomancy @icosahedron.website