在 Emacs 中,一切看起来都像一个服务

Emacs 作为操作系统、Shell 或平台

  • 许多人认为 Emacs 之所以给人“像操作系统”的感觉,是因为它在内核之上编排了许多工具(邮件、git、项目管理、聊天、自动化)。
  • 也有人说,把它称为 shell 或 Lisp 机器 / 平台,而不是操作系统,更准确。
  • 一种观点认为:操作系统是一个共享的虚拟机层;按这个定义,Emacs 是一个强大的平台,但不是操作系统。
  • 还有人强调,Emacs 本质上是“一个带文本编辑器的 Lisp 环境”,而不是反过来。

能力与可扩展性

  • 用户强调其深度集成:编辑、版本控制、电子邮件、RSS、日历、车队管理、构建流水线、博客、脚本等,全部共享数据。
  • Emacs 庞大的 API(网络、进程管理、hooks、advice、UI 原语)以及“万物皆 buffer”的模型,使其能够进行广泛定制。
  • 具体例子:用于检查证书、通过 IRC 发送短信、遍历项目文件进行审查,或构建整个博客的自定义命令。
  • 有人认为它在功能上可与典型 IDE 媲美甚至超越后者(补全、编译器检查、测试、调试)。

客户端/服务、服务与 Unix 哲学

  • “一切都是服务”的表述在一些人看来过于泛化:几乎任何东西都可以被描述为客户端/服务端。
  • Emacs 被描述为 Unixland 里的 Lisp 机器“难民”:它遵循 Lisp 哲学,而不是经典的“微小工具”Unix 哲学,尽管它能很好地与 CLI 工具集成。
  • CEDET 和其他较老的子系统展示了 Emacs 吸收多种范式的历史(语义解析,后来是 LSP,如今是 agent)。

学习与配置

  • 几位用户建议从发行版(例如 Spacemacs)转向手写配置,以真正学会 Emacs。
  • 提到的资源包括:一本流行的 Emacs 书籍和整理过的 “awesome Emacs” 列表;还有简短的入门视频。
  • 一些用户会随着时间减少外部包,更依赖内置功能。

企业工具与控制

  • 一个反复出现的主题是:雇主出于“团队一致性”或合规/安全原因,强制使用单一编辑器(通常是 VS Code)。
  • 许多人认为这适得其反,主张开发者应使用任何能最大化其生产力的编辑器。
  • 也有人承认统一工具有助于上手、指导和 IT 支持,但仍认为严格禁止过于激进。

远程使用与 Emacs Server

  • Emacs 可以作为守护进程运行,emacsclient 作为本地“客户端”共享 buffers。
  • 这主要基于本地域套接字;据称尝试通过 SSH 转发该套接字并不奏效。
  • 变通方案包括用 TRAMP 处理远程文件,或使用 X11 转发(ssh -X),不过也有人指出存在性能和稳定性问题。