在 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),不过也有人指出存在性能和稳定性问题。