GNU Emacs 可能不是 Unix 上最古老的交互式文本编辑器——可以认为它的出现早于或与 Vi 编辑器 旗鼓相当——也不是现存唯一的 Emacs。然而,它无疑是最受欢迎的 Emacs,也是 POSIX 上可用的最佳编辑器之一。或者说,直到 Atom、VSCode 和 Brackets 等崭新的编辑器出现在当今全新的开源领域之前,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。它可以作为终端中的文本界面运行,作为具有 GTK、Aqua、Lucid 或其他 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,不妨试用一下,看看它能为你做些什么。
9 条评论