还有人用 Emacs 吗?

Lobsters Hottest 工具

摘要

作者对与 Emacs 数十年关系的个人反思,包括转向 VSCode 和 IntelliJ,最终因其独特功能回归 Emacs。

<p><a href="https://lobste.rs/s/s1ep1w/is_anyone_still_using_emacs">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/06/20 20:18

# 还有人用Emacs吗?——胡里奥·梅里诺 (jmmv.dev) 来源:https://jmmv.dev/2026/06/is-anyone-still-using-emacs.html 在橙站(https://news.ycombinator.com/item?id=48584135)最近的一场讨论中,因《Emacs 31即将到来:我已经日常使用的那些变化》(https://www.rahuljuliato.com/posts/emacs-31-around-the-corner)这篇文章的引发,大家纷纷自问“还有人用Emacs吗?”并各自分享观点。 对我来说,答案是响亮的“是”……但有趣的是,我并不是“还在用”Emacs,而是“重新开始用”Emacs。与其把我的回答埋没在长篇讨论线程里,不如借此机会讲讲我过去……差不多30年间与Emacs“分分合合”的经历。最后,我会揭示那个让我感觉像开了挂、并始终沉迷其中的具体特性。 ## 从DOS、Windows到Linux 我在1997年左右通过Caldera OpenLinux 1.1进入了Linux世界。在此之前,我小时候沉迷于Borland Turbo C++和Visual Basic,所以对当年那些如今已失传的华丽IDE(https://jmmv.dev/2023/12/the-ides-we-had-30-years-ago.html)非常熟悉。 当我进入Linux这个陌生世界时,不得不买了几本入门书。是的,实体书——因为那是我们当年学习新东西的方式。这两本书都提到了Vim和Emacs,并称它们为高级选择。我觉得这很奇怪,因为我之前用过的IDE似乎更完整,但不知为何,我这个Windows叛逆者还是勇往直前了。我分别学习了这两个编辑器的基本用法,并完成了它们的教程。 那两本我当年用来学习Linux的旧书,翻开时正好展示着它们的Vim和Emacs介绍。从那时起到大约2015年,我一直在Vim和Emacs之间摇摆不定。有时用这个,有时用那个。写长代码时我喜欢Emacs,但在pkgsrc工作中需要快速编辑几十个不同文件时,Vim表现更出色。 ## 转向VSCode和IntelliJ 尽管Vim和Emacs用起来不错,但我总觉得缺了点什么。语言集成很差,所以我被大家吹捧的现代编辑器吸引了,尤其在我转到macOS之后。我尝试了一堆,比如现已停产的Atom(https://en.wikipedia.org/wiki/Atom_(text_editor))和Brackets(https://en.wikipedia.org/wiki/Brackets_(text_editor)),但它们都感觉脆弱且杂乱:功能太多,设置太多。 然后,2015年VSCode出现了。我试驾时,它从一开始就“感觉对了”。它看起来很现代,相对轻量,而它那简单明了的设置编辑器——说白了就是一个JSON文件,因为那时还没有设置面板!——让我感觉一切尽在掌握。我能“理解”这个现代编辑器,并轻松地根据我的需求进行调整。 不久之后,我开始学习Go和Rust,VSCode与它们对应的LSP的集成让这个过程变得更容易:代码自动补全和实时错误高亮大大加快了我的学习速度。对于这些语言,我坚持用VSCode,并慢慢淘汰了Emacs。我彻底被说服了。 那段时间,我还在谷歌参与Bazel(一个Java项目)的开发,而IntelliJ是自然的选择。我曾试图用Emacs做Java开发,但IntelliJ(当时和现在)*实在太好了*,以至于它是唯一现实的选择。 我在微软短暂任职期间继续使用VSCode及其Vim插件,当时我在一个C++代码库工作,需要连接远程Windows机器。大多数人直接用RDP在远程机器上“直接”工作,但我受不了那种工作流:我更喜欢在桌面上运行VSCode,通过SSH连接到远程机器——这正是VSCode非常擅长的功能。 ## 回到(Doom)Emacs 然后……2022年我搬到了Snowflake,那时的开发工作是在一台古老的Linux虚拟机里进行的,我日常的工作是写shell脚本和Bazel构建文件:VSCode和IntelliJ在这里都帮不上忙,而且我之前提到过,我讨厌在“远程”图形环境的限制下工作。于是我的本能是回到SSH,用它连接到本地的虚拟机。 当我这样做时,我需要一个能用于长时间工作会话的编辑器,而古老而可靠的Emacs就在那里等着我。但这一次,我没有耐心去配置它了。你看:多年来我积累了数百行的`init.el`文件,却对它们理解不深,我想全部扔掉从头开始……但这工作量太大了。也许是命运让Doom Emacs(https://github.com/doomemacs/)在正确的时间出现在我面前。 来自项目网站的Doom Emacs默认截图。你看,Doom Emacs是一个Emacs“发行版”,有人经历了(或者享受了,我不评判)从头配置Emacs的痛苦。更具体地说,Doom Emacs提供了合理的默认设置、预定义的语言集成,以及欢迎前Vim用户的体验。它自称不是IDE……但在我感觉就像是一个。 一旦我设置好,我就体验到了既视感:Emacs“感觉对了”,就像2015年的VSCode一样。突然间,许多Emacs功能通过交互式弹出菜单变得可发现,这些菜单通过基于空格键的快捷键触发——不会毁掉你的手腕,并且与我早已习惯的Vim风格按键绑定共存。更重要的是:*配置*变得简单易懂,分布在三个简单的文件里: - `config.el`:指定全局设置,如主题或字体; - `init.el`:选择需要启用的特定Doom模块; - `packages.el`:安装非Doom的包。 这些文件的默认配置已经很合理,并有大量注释可以帮助你调整那些你可能想微调的细节。 借助这个新设置,我获得了有史以来最好的Emacs体验。感谢LSP的进步(这得感谢VSCode)和像tree-sitter这样的现代功能,Emacs现在感觉像一个IDE:大多数我需要处理的语言都能得到良好的语言集成。 对我来说,最致命的功能是:无论我在哪台机器上工作,我都能得到*完全相同的开发环境*。不管是MacBook还是Linux笔记本,或者我正在连接一个Linux云端工作站甚至我自己的FreeBSD服务器:我只需要一个shell、tmux和Emacs,就能同样高效。对我来说,这一点非常有价值,因为我倾向于在多台机器上工作,而肌肉记忆带来的回报很大。 ## 不过Doom是不是“太过了”? 如果你上网查查Doom Emacs,你会发现有人“抱怨”它“做了太多事”。这是真的:它确实做得很多,所以才觉得它如此有用。但我经常想,我能不能精简一些,因为有一天我想*更多*地了解Emacs的底层。尤其是现在,我看到许多现代第三方模块“毕业”并成为官方包的一部分。 出于这些原因,我最近很想尝试Bedrock(https://github.com/ashton314/emacs-bedrock)或Emacs Solo(https://github.com/LionyxML/emacs-solo)这些发行版。然而……切换所需的激活能量实在太高了。如果我决定走那条路,好吧,我仍然会问自己为什么不真正彻底走向“原始”Emacs。 在结束之前,还有一个相关的思考:我无法完全理解Emacs如何因为Elisp的支持而变得具有变革性。当然,我可以在Emacs*内部*实现更多的逻辑和工作流,但我已经通过shell中的脚本轻松完成了“一切”——而且脚本感觉更Unixy,因为“Unix就是我的IDE”。实际上,我不喜欢Org mode(https://orgmode.org/)和Magit(https://magit.vc/)被“锁”在Emacs内部,而不是作为独立应用程序存在。我肯定错过了什么,但我不太确定那是什么…… --- 那么回到文章开头的问题:是的,我仍然使用Emacs,而且由于我需要一直在不同的远程机器上工作,Emacs对我来说甚至比过去更重要了。 现在的问题是:你“还”在用Emacs吗?如果有,你用的是哪个发行版?Emacs如何改变你的工作流程?

相似文章

离开 Magit 后的 Emacs

Lobsters Hottest

作者讲述了他们离开 Emacs 的 Magit Git 界面,转而采用 VC-mode 和自定义 Git 脚本等替代方案的经历,重点介绍了其中的调整和所学到的经验教训。

软件界的Emacs化

Hacker News Top

作者讲述了在终端中阅读 Markdown 的烦恼,并描述了如何使用 Claude 快速构建一个自定义的 macOS Markdown 查看器(MDV.app),展示了 AI 如何让人能够迅速创建个人软件工具。

Emacs 就是我的浏览器

Lobsters Hottest

Joshua Blais 分享自己如何用 Emacs 内置的 EWW 替代主流浏览器,完成 85–90% 的日常上网需求,称此举干扰更少、信噪比更高。