谁在乎 Emacs?

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

Opensource.com

GNU Emacs 可能不是 Unix 上最古老的交互式文本编辑器——可以认为它的出现早于或与 Vi 编辑器 旗鼓相当——也不是现存唯一的 Emacs。然而,它无疑是最受欢迎的 Emacs,也是 POSIX 上可用的最佳编辑器之一。或者说,直到 AtomVSCodeBrackets 等崭新的编辑器出现在当今全新的开源领域之前,Emacs 都是最佳编辑器之一。现在有如此多的强大文本编辑器可供选择,其中许多都迭代了 Emacs 的想法和传统,您可能会想知道 GNU Emacs 是否仍然具有现实意义。

自 1983 年以来的 Emacs

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

Emacs 自 1983 年以来就存在这一点非常重要。虽然年龄绝不意味着质量或增长,但 Emacs 从一开始就一直在不断的协作开发中。如果您正在寻找长期稳定性,Emacs 是一个光辉的例子。虽然自诞生以来它经历了重大变化,但可以合理地预计,10 年或更早之前的 GNU Emacs 在功能上与最新版本相同。有些 Emacs 用户在他们的 .emacs 配置文件中定制的 hacks 可以追溯到 90 年代中期。我的一些配置选项是从导师那里借来的,所以我的配置早于我对 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 或发行版存储库的二进制文件提供的产品完全相同。说实话,自己编译有时甚至更好,因为您可以调整构建方式以满足您的特定需求,但您永远不必不情愿地放弃功能。

破解代码,而不是 API

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

有时,抽象是一件好事。通过实现 API,开发人员可以提供许多入口点来扩展他们的产品,例如为同一编辑器提供 JavaScript、Python 和 Ruby 接口。另一方面,API 就是 API,这意味着您只能使用所提供的。如果 API 开发人员没有预料到您想要访问某些数据对象,那么您就无法访问该数据对象,除非您自己破解 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 本身一起提供。 这包括电子邮件客户端、Web 浏览器和新闻阅读器。

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

“...但是用于 Lisp 的对话而不是 Python。”

对于 Lisp 的方**言**,当然?

可以充分说明 Emacs 的历史可以追溯到 1976 年。 我可以在原始 EMACS 和 GNU Emacs 之间切换,而无需考虑。 它们的工作方式非常相似。

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

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

我来晚了,但想说同样的事情; 我记得 1980 年我将其作为我的第一个编辑器来学习。

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

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

在电子邮件客户端构建到 Emacs 中后不久,就流传着一些模因:“每个程序都试图扩展,直到它可以读取邮件。 那些不能如此扩展的程序被可以扩展的程序所取代。” -Jamie Zawinski 的软件包络定律
“麻省理工学院开发的每个程序都扩展到可以读取邮件。” 来自 rec.humor.funny。 这些妙语的提出考虑到了 Emacs 作为最重要的例子。 并且在开源世界中仍然存在很多真相。 我认为当许多开发人员听到它时,他们会咯咯地笑一下,并犹豫片刻,想着,“嘿,这有点真实……”

逆命题也是真的吗? 所有可以读取电子邮件的程序最终都会变成 Emacs? 如果是真的那就太好了。

回复 ,作者:cuvtixo

Creative Commons License此作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.