Emacs 31.1 有哪些新内容

Emacs 31.1 被欢迎为一次显著的使用体验升级,内置 Tree-sitter 集成、Eglot LSP 客户端、可懒加载的“user-lisp”目录、停靠式文件树,以及重获新生的嵌入式网页浏览器,都缩小了它与现代编辑器之间的差距。老用户们描述了自己重置多年积累的配置、更多依赖新的核心功能;也有人强调 Emacs 作为“文本编排器”的强项,尤其适合与 AI agent 结合进行编程和自动化。与此同时,围绕包管理变动、glibc 放弃 unexec 的影响,以及在强大 LLM 辅助工具时代新手应如何最好地学习 Emacs 和 Emacs Lisp,仍存在争论。

Emacs 31.1 功能与性能

  • 用户对启动开销下降感到满意;这被视为终于结束了多用户系统上那句老生常谈的“Emacs 太重 vs vi”的抱怨。
  • 新的停靠式 speedbar 被强调为一项显著的使用体验改进,带来了熟悉的左侧文件夹视图。
  • 通过 xwidget-webkit 重新提供/改进图形化网页浏览器也受到欢迎,尤其适合 PDF 和 Jupyter,不过据说 macOS 支持仍然比较粗糙。

Tree-sitter 与语言工具

  • 内置的 Tree-sitter grammar 安装让人松了一口气,尤其是在 macOS 上,以前手动寻找 ABI/版本很痛苦。早期反馈称按需安装“就是能用”。
  • 用户反馈 treesitter + LSP(配合 eglot)工作流很顺畅。作为内置 LSP,Eglot 被认为“足够好”,而且对很多人来说比 lsp-mode 更简单。

AI 与 Emacs 集成

  • Emacs 核心里没有 AI,这点有些人明确表示喜欢,但第三方 AI 工具和“agentic”编程方案很多。
  • 几条评论把 Emacs 描述为特别适合 LLM:一切都是文本、可内省、可作为函数调用,这使得闭环代理能够重新配置 Emacs、操纵 buffer、查询外部系统(Jira、Git、Slack、浏览器等)并评估结果。
  • 有些人更喜欢编辑器内紧密集成的 AI(例如其他编辑器),但也有人现在更倾向于使用独立的 AI 工具再配合 Emacs 或其他编辑器。

包、用户 Lisp 与配置

  • 新的 user-lisp 目录令人兴奋:人们打算把它当作一个轻量级包区域,放置自动加载的命令。
  • 有一个颇具争议的子讨论,围绕包系统中弃用 :vc + :load-path。一方指责文章误解了情况,并解释这是一项与符号链接可移植性相关的传递性弃用;另一方则认为这个改动令人沮丧,并觉得其理由和沟通都不好。
  • package-autosuggest 默认禁用被一些人辩护为面向新手;另一些人认为可发现性对所有用户都很重要。
  • package-review-policy 被一些人称赞为在“AI 时代”很重要,也被另一些人斥为“安全表演”。

学习 Emacs 与 Emacs Lisp

  • 多种学习路径被提议:内置教程、Info 手册(尤其是 Elisp 手册和 Intro)、一本流行的付费书、精选配置,以及 YouTube 内容。
  • 对内置教程的看法分歧很大:有人认为它必不可少;也有人觉得它让人沮丧,建议直接使用 Emacs,需要时再问 LLM。
  • 关于 Elisp 设计模式,人们建议研究结构良好的包,使用 describe-function / describe-variable,并在文本处理时优先使用 buffer 而不是字符串。
  • 一种更新的做法是让 LLM 通过 emacsclient 一边修改正在运行的 Emacs,一边充当交互式 Elisp 导师。

与其他编辑器和终端的比较

  • 几位用户表示自己轮流尝试了现代编辑器(VS Code、Neovim、Helix、Zed),最后又回到 Emacs,尤其是在 Tree-sitter 和 eglot 内置之后。
  • 有些人仍然更喜欢 Vim 的命令结构或极简理念,但总体上承认 Emacs 在功能上更强大。
  • 终端集成评价不一:有人认为 vterm 有问题;也有人推荐更新的终端桥接方案(通过 libghostty 及类似项目),模糊了原生终端与 Emacs 之间的界限。

配置、发行版与按键绑定

  • 老用户谈到“.emacs 破产”:把几十年的杂乱配置全部丢掉,基于现代内置功能(补全、eglot、Tree-sitter 等)重建。
  • 如果想要一个生产力较高且尽量少定制的环境,会有人推荐 Doom Emacs 这类入门发行版。
  • 使用 Emacs 原生按键绑定与使用 Evil(Vim 模拟)之间仍有持续张力;有些人刻意避免 Evil,以便完全内化原生绑定。
  • 旁支讨论还涉及键盘布局(qwerty vs Colemak 变体)和硬件(直列/人体工学键盘),但这些都被视为个人偏好,而非 Emacs 专属。

治理、架构与历史笔记

  • 对“某位核心维护者因 portable dumper 而辞职”的问题,有人回答说他们仍然活跃;还提到之前因技术争议曾有过辞职威胁,既有批评,也有人呼吁继续向前。
  • 一些人对 glibc 移除 unexec 感到遗憾,认为这是失去了一种强大的“基于镜像”的能力;另一些人则认为可移植序列化和 pdumper 风格的方法是更好的长期解决方案。
  • 还解释了 temacs 作为旧版 Emacs 中间构建产物的作用,通常只有从源码构建时才会看到。

杂项体验

  • 用户注意到关于缺少 lexical-binding cookie 的新警告,这可能会破坏旧的 site-lisp 代码;有人认为这是更严格但合理的卫生措施。
  • 有人呼吁提供官方的 Windows ARM64 二进制包,反映了硬件趋势的变化。
  • 还有几个人表示,因为 31.1 发布了,他们重新找回了回到 Emacs 或清理配置的动力。