强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

Emacs 完全指南 / 第 01 章:Emacs 简介

第 01 章:Emacs 简介

1.1 Emacs 的历史

Emacs 是最古老的、至今仍在活跃开发的文本编辑器之一。它的历史可以追溯到 1976 年。

时间线

年份 事件
1976 Richard Stallman 在 MIT 人工智能实验室编写最初的 Emacs(Editor MACroS)
1984 Stallman 启动 GNU 项目,开始开发 GNU Emacs
1985 GNU Emacs 13.0 发布,首个广泛传播的版本
1994 GNU Emacs 19.x 引入了 X Window 支持
2001 GNU Emacs 21.x 引入了字体渲染和图片支持
2009 GNU Emacs 23.x 支持 Unicode 和 daemon 模式
2012 GNU Emacs 24.x 引入内置包管理器(package.el)
2018 GNU Emacs 26.x 引入线程支持、行号显示模式
2019 GNU Emacs 27.x 原生支持 JSON 解析
2021 GNU Emacs 28.x 引入原生编译(native-comp)和 Tree-sitter 支持
2023 GNU Emacs 29.x 全面集成 Tree-sitter、内置 use-package
2025 GNU Emacs 30.x 发布,进一步优化性能和现代功能

名字的由来

Emacs 全称是 Editor MACroS,最初是为 TECO 编辑器编写的一组宏命令集合。 后来它演变为一个独立的编辑器,但名字保留了下来。

GNU Emacs 中的 GNU 来自 “GNU’s Not Unix”——这是 Stallman 发起的自由软件项目名称。


1.2 Emacs 的设计哲学

Emacs 的设计哲学与其他编辑器截然不同,理解这些理念有助于你更好地使用它。

核心理念

┌─────────────────────────────────────────────────┐
│              Emacs 设计哲学金字塔                  │
├─────────────────────────────────────────────────┤
│                                                 │
│                  自由软件                         │
│                 ╱        ╲                       │
│              可扩展性    可定制性                  │
│             ╱                ╲                   │
│          自文档化          内部统一性              │
│         ╱                        ╲              │
│       ┌──────────────────────────────┐          │
│       │    一切都是文本缓冲区          │          │
│       └──────────────────────────────┘          │
│                                                 │
└─────────────────────────────────────────────────┘

1. 一切都是文本缓冲区(Everything is a Buffer)

Emacs 中的邮件、文件、终端输出、调试信息……统统以"缓冲区"的形式呈现。 这意味着你可以在任何地方使用相同的编辑命令。

2. 可扩展性(Extensibility)

Emacs 的核心几乎完全用 Emacs Lisp(Elisp)编写。你不仅可以通过配置来定制行为, 还可以通过编写 Elisp 代码来修改或扩展 Emacs 的任何功能。

3. 自文档化(Self-Documenting)

Emacs 的每个功能都有文档。你可以随时:

  • C-h k — 查看某个按键绑定的是什么命令
  • C-h f — 查看某个函数的文档
  • C-h v — 查看某个变量的含义
  • C-h m — 查看当前主模式的文档

4. 内部统一性(Uniformity)

所有操作都遵循相同的模式:移动光标、编辑文本、执行命令。学了一套操作, 就能在所有场景中使用。


1.3 Emacs vs Vim

Emacs 和 Vim 是编辑器世界中两大"宗教"。以下是客观的对比:

功能对比表

特性 Emacs Vim
学习曲线 陡峭(但更平滑入门路径) 陡峭(模态编辑需要适应期)
扩展语言 Emacs Lisp(完整编程语言) Vimscript / Lua
模态编辑 默认无(可通过 Evil 插件获得) 原生支持
GUI 功能 窗口分割、图片、浏览器、终端 主要面向终端,GVim 有限支持
内置功能 极其丰富(邮件、日程、终端……) 精简(聚焦编辑)
启动速度 较慢(可通过 daemon 模式优化)
内存占用 较高 较低
社区生态 包数量多,深度广 包数量多,配置多样
多平台 Linux/macOS/Windows 全平台 全平台
许可证 GPLv3 Vim License(慈善软件)

效率对比

;; Emacs 思维:用 Elisp 扩展一切
(defun my/open-project-readme ()
  "打开当前项目的 README 文件。"
  (interactive)
  (let ((readme (locate-file "README.md" (list (projectile-project-root)))))
    (when readme
      (find-file readme)
      (message "已打开项目 README: %s" readme))))
" Vim 思维:用 Vimscript 配置
function! OpenProjectReadme()
  let l:readme = findfile('README.md', getcwd() . ';')
  if !empty(l:readme)
    execute 'edit ' . l:readme
  endif
endfunction

哲学差异

维度 Emacs Vim
设计理念 万物皆可 Emacs(集成环境) 专精编辑,配合外部工具
键位风格 修饰键组合(Ctrl/Meta) 模态切换(Normal/Insert)
扩展方式 运行时动态修改一切 通过插件和 autocmd
配置语言 一等公民(Elisp) 二等公民(Vimscript)
与系统集成 深度集成(TRAMP、Dired) 通过 shell 管道

注意: 没有绝对的好坏。选择哪个编辑器取决于你的工作流和个人偏好。 许多用户在 Emacs 中使用 Evil 模式获得了两全其美的体验。


1.4 Emacs 的核心概念

在深入学习之前,需要理解 Emacs 的几个核心概念:

核心术语

术语 英文 说明
缓冲区 Buffer 内存中的文本块,对应一个文件或临时数据
窗口 Window 显示缓冲区的视图区域(可以有多个窗口)
框架 Frame 操作系统级别的窗口(包含若干个窗口)
主模式 Major Mode 决定当前缓冲区的行为(如编辑 Python、Org 文件)
次模式 Minor Mode 可叠加的辅助功能(如行号显示、自动补全)
Point 光标在缓冲区中的位置
区域 Region 标记(Mark)到光标(Point)之间的文本范围
杀环 Kill Ring 类似剪贴板的历史记录栈
键序列 Key Sequence 一组按键的组合,绑定到某个命令

模式系统

                    ┌─────────────┐
                    │  缓冲区     │
                    └──────┬──────┘
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
        ┌──────────┐ ┌──────────┐ ┌──────────┐
        │ 主模式   │ │ 次模式 1 │ │ 次模式 2 │
        │ (唯一)   │ │ (可叠加) │ │ (可叠加) │
        └──────────┘ └──────────┘ └──────────┘
              │            │            │
              ▼            ▼            ▼
        python-mode   display-line   company-mode
        org-mode      flycheck       which-key
        lisp-mode     hl-todo        evil-mode
  • 每个缓冲区恰好有一个 主模式(Major Mode)
  • 可以同时开启多个 次模式(Minor Mode)
  • 主模式决定了基本的编辑行为和按键绑定

1.5 Emacs 发行版

由于 Emacs 的高度可定制性,社区创建了多种"开箱即用"的发行版。

主流发行版对比

发行版 风格 启动时间 学习曲线 适合人群
原版 Emacs 极简 中等 喜欢从零构建的用户
Doom Emacs 类 Vim(Evil) 中等 较低 Vim 转 Emacs 的用户
Spacemacs 类 Vim(Evil) 较慢 较低 全栈开发者
Prelude 纯正 Emacs 中等 经典 Emacs 爱好者
Centaur Emacs 现代化 中等 追求美观的用户
Crafted Emacs 教学向 想深入学习 Elisp 的用户

Doom Emacs

Doom Emacs 是目前最受欢迎的 Emacs 发行版之一:

  • 核心优势:速度快、外观精美、Evil 优先
  • 模块系统:通过 init.el 中的 :tools:lang 等模块快速启用功能
  • 包管理:使用 straight.el 从 Git 源安装包
  • 社区活跃:Discord 社区、完善的文档
# 安装 Doom Emacs
git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.config/emacs
~/.config/emacs/bin/doom install

Spacemacs

Spacemacs 是最早的"batteries-included" Emacs 发行版:

  • 核心优势:完善的 layer 系统、丰富的文档
  • 层次系统:每个语言或工具是一个独立的 layer
  • 社区成熟:大量教程和预配置
# 安装 Spacemacs
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d

选择建议

你是 Vim 用户?
  ├── 是 → 选择 Doom Emacs
  └── 否 → 你喜欢折腾吗?
        ├── 是 → 从原版 Emacs 开始
        └── 否 → 选择 Prelude 或 Centaur

建议:初学者可以从 Doom EmacsPrelude 开始, 等熟悉了 Emacs 的概念后再考虑自定义配置。


1.6 为什么选择 Emacs

适用场景

场景 Emacs 的优势
编程开发 LSP、Tree-sitter、DAP、项目管理
写作与笔记 Org-mode(比 Markdown 更强大)
知识管理 Org-roam(类似 Roam Research)
邮件管理 mu4e、Notmuch
终端操作 Eshell、Vterm、Shell
远程编辑 TRAMP(透明远程编辑)
版本控制 Magit(最好的 Git 客户端之一)
文档排版 LaTeX 集成、Org 导出
数据科学 Org-babel(可执行代码块)

用户案例

案例 1:全栈开发者小明

小明使用 Doom Emacs 作为主力编辑器:

  • eglot(LSP)编写 TypeScript 和 Python
  • Magit 进行 Git 操作和代码审查
  • Org-mode 记录项目笔记和待办事项
  • TRAMP 连接服务器修改配置文件
  • Vterm 作为终端模拟器

案例 2:学术研究员小红

小红使用 Emacs 撰写论文:

  • Org-mode 撰写论文大纲和初稿
  • Org-babel 混合 LaTeX 和 Python 代码
  • Org-ref 管理文献引用
  • pdf-tools 阅读和标注 PDF
  • Org-roam 建立知识网络

1.7 本教程的使用方法

快捷键约定

本教程使用以下约定来表示键序列:

符号 含义 示例
C-x Ctrl + x C-x C-f 表示 Ctrl+x 然后 Ctrl+f
M-x Alt + x(Meta) M-x 表示 Alt+x
S-x Shift + x S-<tab> 表示 Shift+Tab
RET 回车键 C-x C-s RET
SPC 空格键 SPC f s 表示依次按空格、f、s
- 连续按键 C-x C-f 表示先后按两组键

代码约定

;; 这是可以直接在 Emacs *scratch* 缓冲区中执行的 Elisp 代码
;; 执行方式:将光标放在代码末尾,按 C-x C-e

(message "Hello, Emacs!")

图标说明

  • 📝 练习:动手练习的内容
  • 💡 提示:有用的技巧和建议
  • ⚠️ 注意:需要特别注意的内容
  • 🔗 扩展阅读:深入了解的参考链接
  • 📋 表格:信息汇总表
  • 🏗️ 场景:真实业务使用场景

1.8 本章小结

要点 说明
历史悠久 从 1976 年延续至今,持续活跃开发
设计哲学 可扩展、可定制、自文档化、万物皆缓冲区
与 Vim 对比 集成环境 vs 专精编辑,无绝对优劣
发行版选择 Doom(Vim 风格)、Prelude(纯正)、Spacemacs(全栈)
核心概念 缓冲区、窗口、框架、主模式、次模式

1.9 扩展阅读


下一章 → 第 02 章:安装与配置