谁在乎 Emacs?

GNU Emacs 已经存在很长时间了——自 1983 年以来——但其持续的开发使其在今天仍然具有相关性。
137 位读者喜欢这篇文章。
open source button on keyboard

Opensource.com

GNU Emacs 可能不是 Unix 上最古老的人机交互文本编辑器——它可能早于或与 Vi 编辑器 相当——也不是现存的唯一 Emacs。然而,它肯定是 POSIX 上最流行的 Emacs 和最好的编辑器之一。或者说曾经是,直到像 AtomVSCodeBrackets 这样的全新编辑器出现在当今崭新的开源环境中。现在有如此多的强大文本编辑器可供选择,其中许多都迭代了 Emacs 的思想和传统,你可能会想知道 GNU Emacs 是否仍然具有相关性。

自 1983 年以来的 Emacs

今天的开源与 1983 年 GNU Emacs 震撼编程界时的情况不同。当时的 Emacs 令人兴奋,因为它确实是同类产品中最好的,并且可以在昂贵且专有的 Unix 安装基础上免费共享。如今,Emacs 只是众多主要为程序员设计的编辑器之一,其中最好的编辑器也是开源的。

重要的是,Emacs 自 1983 年以来就一直存在。虽然年龄绝不意味着质量或增长,但 Emacs 从一开始就一直在持续协作开发。如果你正在寻找长期稳定性,Emacs 是一个闪亮的例子。虽然自诞生以来它经历了重大变化,但可以合理地预计 10 年或更久以前的 GNU Emacs 在功能上与最新版本相同。有些 Emacs 用户在他们的 .emacs 配置文件中使用了可以追溯到 90 年代中期的自定义 hacks。我的一些配置选项是从导师那里借来的,所以我的配置早于我使用 Emacs,而且它们仍然有效。

使用 Emacs,你不仅限于调整主题元素或只是鼓捣一个很酷的插件。当你 hack 你的 Emacs 配置时,你正在改变 Emacs 的运行方式以及你与它的交互方式。你创建了自己的 Emacs 体验,并且可以根据需要保留该体验。

以文本形式远程运行

就功能而言,Emacs 拥有的任何东西可能也存在于现代编辑器中。软件往往以这种方式运行:应用程序借用并集成其前辈的功能,因为这些功能被认为是基本期望。然而,Emacs 有一件事是很难被击败的:它能够在终端中以纯文本界面运行,而不会丢失任何功能。

Emacs 的核心是一个 Lisp 解释器。你可以把它想象成 Python IDLE,但用于 Lisp 的一种方言而不是 Python。它可以在终端中作为文本界面运行,作为具有 GTKAquaLucid 或其他界面的 GUI 界面运行,或者作为另一个 Emacs 会话中的客户端运行。虽然你可能无法使用一些依赖于图形服务器的专门功能(例如,将 PDF 作为图形文件打开在单独的终端中不受支持),但所有核心功能和大多数扩展程序的运行方式与 GUI 相同。

无遥测

并非所有文本编辑器都会跟踪你,但有些会。有些编辑器不仅会记录你最初下载产品的情况,还会主动跟踪你的使用情况,无论你是否意识到。正是因为这个原因,像 VSCodium 这样的项目才存在:帮助你编译你的编辑器,几乎不包含任何跟踪软件。不幸的是,编译编辑器的“非官方”版本(就真正开源的编辑器可以被命名为“官方”的程度而言)会否定你运行某些扩展程序的能力,因此有时你的选择是运行赞助公司提供的二进制文件,或者运行功能减少的编辑器。

GNU Emacs 帮助推广的自由软件许可证的保证是这种情况不会发生。你自己编译的 GNU Emacs 可以与来自 GNU 或发行版存储库的二进制文件提供的产品完全相同。说实话,自己编译有时甚至更好,因为你可以调整构建方式以满足你的特定需求,但你永远不必不情愿地放弃功能。

Hacking 代码,而不是 API

开源意味着你可以 hack 代码,无论如何。然而,hack 编辑器和进行 API 调用之间存在很大的差异。对于许多现代文本编辑器,当他们将自己宣传为“可破解”甚至“可扩展”时,他们实际上指的是核心开发人员提供的 API。这绝不是问题,但这与修改引擎本身的代码不同。使用 Emacs,当你为你的编辑环境编写 Lisp 修改时,无论是你.emacs配置文件中的一行代码,还是你提供给成千上万其他用户的精美插件,你都在重新编程你正在运行的内容。

有时,抽象是一件好事。通过实现 API,开发人员可以提供许多进入扩展其产品的入口点,例如为同一编辑器提供 JavaScript、Python 和 Ruby 接口。另一方面,API 就是 API,这意味着你只能使用提供的内容。如果 API 开发人员没有预料到你想要访问某些数据对象,那么你将无法访问该数据对象,除非你 hack API 本身(这在开源中是完全可能的)。

然而,Emacs 作为一个 Lisp 解释器,确保了你可以访问一切。在某种程度上,它是 Unix 本身承诺的实现:它赋予普通用户对其环境的最终控制权。在 Emacs 中,你可以开发在 Emacs 中运行的整个应用程序。如果你想开发一个应用程序,但没有时间设计 GUI 并构建使一切有意义的复杂代码,你可以使用 Emacs 作为你的脚本语言和你的平台。许多人已经这样做了,有时获得了与 Emacs 本身一样受欢迎的成功

最大化生产力

当你使用在常用约定(如 Ctrl+C 复制和 Ctrl+V 粘贴)之前发明的编辑器时,你将面临一个学习曲线。Emacs 键盘符号起初可能令人困惑,例如 C-x C-f 打开文件或 M-d 向前剪切一个词。有很多方法可以缓解这种情况。你可以激活 CUA 模式,它使用像 Ctrl+C 这样的快捷方式进行复制,或者你可以花时间创建一个替代键盘方案,以便你可以使用你熟悉的快捷方式(Ctrl+O 打开,Ctrl+Q 退出,等等)。然而,像大多数坚持使用它的人一样,你可能会发现,一旦你学会了 Emacs 并将它有时晦涩难懂的命令记在脑海里,就很难使用其他任何东西了。一位 Emacs 用户非常沉迷于 Emacs 快捷键,以至于他创建了一个 LibreOffice 插件,以便他可以像使用 Emacs 一样使用 LibreOffice!

当你很好地使用 Emacs 时,输入单词的行为和用于编辑这些单词的命令序列之间几乎没有任何分离。你的大脑不必在编写句子和返回几个单词进行快速更改、保存文件或复制和粘贴等等之间来回切换。这对 Emacs 来说都是一样的,而且你的手指永远不会闲着。没有更好的方法来最大化生产力。

熟悉 Emacs 需要练习,但不会比学习游戏机控制器多,而且比学习乐器少得多。但一旦你内化了它,Emacs 就会释放出与游戏机一样多的乐趣(试试 M-x tetris)和几乎与乐器一样多的灵感。

现代时代的现代工具

与开源中的情况一样,使用 Emacs,你可以建立在他人辛勤劳动的基础上。通过正确混合 Emacs 包,你可以将 Emacs 转换为智能交互式开发环境 (IDE)、过度乐于助人的打字机、角色扮演游戏 (RPG) 控制面板、议程、日历应用程序、多媒体播放器等等。

开源本质上不是一种非常有竞争力的野兽。你可以根据需要使用 Emacs,你也可以使用另一个编辑器。你不受任何单一工具的忠诚度或合同的约束。GNU Emacs 是现代时代重要的开源编辑器,以一些重要而有意义的方式捍卫软件和用户自由与便利。如果你还没有尝试过 Emacs,那就试驾一下,看看你能用它做什么。

接下来要读什么

Emacs 文本编辑器入门

GNU Emacs 文本编辑器自 1976 年以来就已存在,并且仍然是软件开发人员和作者的热门选择。它的主要重点是可扩展、可自定义、自我……

Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,而且常常是同时进行。

9 条评论

有人说(我也同意),Emacs 是一款伪装成编辑器的操作系统。

由于其内置的 LISP 解释器/编译器,有许多重要的应用程序是用 Emacs-LISP 编写的,其中许多应用程序都随 Emacs 本身一起提供。 这包括电子邮件客户端、网络浏览器和新闻阅读器。

代码也具有极强的可移植性。Emacs 源代码可以为 Microsoft Windows 和 macOS 以及几乎所有曾经构建的基于 UNIX 的系统进行编译。 因此,我可以在我拥有的每台计算机上使用相同的编辑器,而无需考虑其操作系统。在许多方面,这比其他一切都更有价值。

“...但使用 Lisp 而不是 Python 进行对话。”

当然是 Lisp 的方**言** 吧?

完全可以说 Emacs 的历史可以追溯到 1976 年。 我可以在原始的 EMACS 和 GNU Emacs 之间切换,而无需多加考虑。 它们的工作方式几乎相同。

你提出的理由很有说服力,并且说服了我。 我已经更新了措辞以反映你所说的。 谢谢!

回复 ,作者:Lars Brinkhoff (未验证)

我来晚了,但想说同样的话;我记得 1980 年我学习的第一个编辑器就是它。

回复 ,作者:Lars Brinkhoff (未验证)

Emacs 是一款伪装成编辑器的操作系统。 :-)

在电子邮件客户端构建到 Emacs 之后不久,流传着几个梗:“每个程序都试图扩展,直到它可以读取邮件。 那些无法扩展的程序将被可以扩展的程序所取代。” - Jamie Zawinski 的软件包络定律
“MIT 开发的每个程序都会扩展,直到它可以读取邮件。” 来自 rec.humor.funny。 这些俏皮话是在考虑 Emacs 作为最重要的例子而提出的。 并且在开源世界中仍然存在很多真实性。 我认为当许多开发人员听到它时,他们会咯咯地笑,并犹豫片刻,想着“嘿,这有点道理……”

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.