第 08 章:Org-mode 基础
第 08 章:Org-mode 基础
8.1 Org-mode 简介
Org-mode 是 Emacs 中最强大的功能之一。它远不止是一个标记语言——它是一个完整的组织系统,集笔记、任务管理、日程安排、写作、编程于一身。
“Org-mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.” — Org-mode 官方文档
核心能力
┌──────────────────────────────────────────────┐
│ Org-mode 全景 │
├──────────┬──────────┬──────────┬─────────────┤
│ 笔记 │ 任务 │ 日程 │ 写作 │
│ 大纲 │ TODO │ 甘特图 │ 导出 │
│ 标签 │ 优先级 │ 重复 │ LaTeX/HTML │
├──────────┴──────────┴──────────┴─────────────┤
│ 编程与数据 │
│ Babel(代码块) / 表格计算 / 时钟记录 │
└──────────────────────────────────────────────┘
8.2 基本语法
标题层级
* 一级标题
** 二级标题
*** 三级标题
**** 四级标题
***** 五级标题
; 标题快捷键(在 Org-mode 中):
; TAB → 折叠/展开子标题
; S-TAB → 全局折叠/展开
; M-RET → 新建同级标题
; M-← → → 提升标题级别
; M-→ → 降低标题级别
; M-↑ → 上移标题
; M-↓ → 下移标题
文本格式化
| 语法 | 显示效果 | 说明 |
|---|---|---|
*粗体* | 粗体 | 粗体文本 |
/斜体/ | 斜体 | 斜体文本 |
_下划线_ | 下划线 | 下划线文本 |
=等宽= | 等宽 | 等宽字体 |
~代码~ | 代码 | 代码标记 |
+删除线+ | 删除线 | |
[[链接][描述]] | 链接 | 超链接 |
列表
无序列表:
- 项目一
- 子项目 A
- 子项目 B
- 项目二
+ 另一种无序列表
+ 使用 + 号
有序列表:
1. 第一步
2. 第二步
1) 子步骤
2) 子步骤
3. 第三步
描述列表:
- 术语 :: 定义内容
- Emacs :: 最好的编辑器
; 列表快捷键:
; M-RET → 新建列表项
; M-S-RET → 新建带复选框的列表项
; M-←/→ → 缩进/反缩进
; M-↑/↓ → 上移/下移列表项
; C-c C-c → 切换复选框状态 [X]
代码块
,#+BEGIN_SRC python
def hello():
print("Hello from Org-mode!")
hello()
,#+END_SRC
,#+BEGIN_SRC elisp
(message "Hello, %s!" user-full-name)
,#+END_SRC
; 代码块快捷键:
; C-c C-c → 执行代码块
; C-c ' → 在独立缓冲区中编辑代码块
; <s TAB → 插入代码块模板(Emacs 28 及以下)
; C-c C-, → 插入代码块(Emacs 29+)
8.3 TODO 任务管理
基本 TODO
* TODO 完成报告
* DONE 提交代码
* WAITING 等待审核
* CANCELLED 取消的任务
; 快捷键:
; C-c C-t → 循环 TODO 状态
; S-←/→ → 快速切换状态
自定义 TODO 状态
;; 在 org 文件头部设置
;; #+TODO: TODO(t) WAITING(w) | DONE(d) CANCELLED(c)
;; 或在配置中全局设置
(setq org-todo-keywords
'((sequence "TODO(t)" "NEXT(n)" "IN-PROGRESS(i)" "WAITING(w)" "|"
"DONE(d)" "CANCELLED(c)")))
优先级
* TODO [#A] 紧急且重要的任务
* TODO [#B] 重要但不紧急
* TODO [#C] 不重要也不紧急
; 快捷键:
; S-↑/↓ → 调整优先级
标签
* TODO 设计数据库架构 :设计:后端:重要:
* TODO 编写前端页面 :前端:Vue:
* DONE 代码审查 :代码审查:后端:
; 快捷键:
; C-c C-q → 添加/修改标签
;; 预定义标签
(setq org-tag-alist '(("设计" . ?d)
("前端" . ?f)
("后端" . ?b)
("紧急" . ?u)
("会议" . ?m)))
复选框
* TODO 购物清单
- [ ] 牛奶
- [ ] 面包
- [X] 鸡蛋
- [ ] 水果
; 快捷键:
; C-c C-c → 切换复选框状态
; C-c C-x C-b → 批量切换
8.4 日程安排与截止日期
关键字
| 关键字 | 含义 | 快捷键 |
|---|---|---|
SCHEDULED | 计划在某天开始 | C-c C-s |
DEADLINE | 截止日期 | C-c C-d |
CLOSED | 完成时间(自动添加) | — |
* TODO 完成报告
SCHEDULED: <2026-05-15 Thu>
DEADLINE: <2026-05-20 Tue>
:PROPERTIES:
:CATEGORY: 工作
:END:
需要在下周五前完成季度报告。
* TODO 每周例会
SCHEDULED: <2026-05-12 Mon 14:00 +1w>
; +1w 表示每周重复
重复任务
* TODO 每日站会
SCHEDULED: <2026-05-10 Mon 09:00 +1d>
; +1d 每天
; +1w 每周
; +1m 每月
; +1y 每年
* TODO 锻炼身体
SCHEDULED: <2026-05-10 Mon +2d>
; +2d 每两天
; 重复任务的标记方式:
; +1d → 每次完成后,下次安排在 1 天后
; ++1d → 始终从今天算起
; .+1d → 从完成那天算起
Agenda 视图
;; 配置 Agenda 文件
(setq org-agenda-files '("~/org/inbox.org"
"~/org/work.org"
"~/org/personal.org"
"~/org/projects/"))
;; 打开 Agenda
;; C-c a a → 周视图
;; C-c a t → TODO 列表
;; C-c a d → 日视图
;; C-c a m → 按标签搜索
;; C-c a s → 按关键词搜索
Agenda 操作
| 快捷键 | 说明 |
|---|---|
a | Agenda 日/周视图 |
t | TODO 列表 |
d | 日视图 |
m | 标签匹配 |
s | 关键词搜索 |
f / b | 前进/后退一周 |
n / p | 下一个/上一个项目 |
j | 跳转到指定日期 |
v d | 天视图 |
v w | 周视图 |
v m | 月视图 |
v y | 年视图 |
8.5 表格
Org-mode 的表格功能非常强大,类似于简单的电子表格。
创建表格
| 姓名 | 年龄 | 职业 |
|--------+------+----------|
| Alice | 28 | 工程师 |
| Bob | 32 | 设计师 |
| Charlie| 25 | 产品经理 |
; 表格快捷键:
; TAB → 跳到下一个单元格
; S-TAB → 跳到上一个单元格
; RET → 跳到下一行
; M-←/→ → 调整列宽
; M-↑/↓ → 上/下移行
; C-c - → 插入水平分隔线
; C-c RET → 插入新行
; C-c ^ → 排序表格
; C-c | → 将选区转为表格
表格公式
| 姓名 | 数学 | 英语 | 平均分 |
|-------+------+------+---------|
| Alice | 90 | 85 | 87.50 |
| Bob | 78 | 92 | 85.00 |
| Carol | 95 | 88 | 91.50 |
|-------+------+------+---------|
| 平均 | 87.67| 88.33| 88.00 |
#+TBLFM: $4=vmean($2..$3)::@5$2=vmean(@2$2..@4$2)::@5$3=vmean(@2$3..@4$3)::@5$4=vmean(@2$4..@4$4)
; 公式说明:
; $4 = 第4列
; vmean = 平均值函数
; C-c C-c → 重新计算公式
8.6 链接
内部链接
[[*标题名称][显示文本]]
[[#custom-id][跳转到指定 ID]]
; 创建链接:
; C-c C-l → 插入/编辑链接
; C-c C-o → 打开链接
; C-c & → 返回链接之前的位置
外部链接
[[https://example.com][示例网站]]
[[file:~/documents/report.pdf][报告 PDF]]
[[file:main.py::42][main.py 第 42 行]]
[[mailto:[email protected]][发送邮件]]
8.7 导出
Org-mode 可以导出为多种格式。
导出命令
| 快捷键 | 说明 |
|---|---|
C-c C-e | 打开导出菜单 |
C-c C-e h h | 导出为 HTML |
C-c C-e l l | 导出为 LaTeX/PDF |
C-c C-e m m | 导出为 Markdown |
C-c C-e o o | 导出为 ODT |
导出设置
,#+TITLE: 我的文档
,#+AUTHOR: 作者名
,#+DATE: 2026-05-10
,#+OPTIONS: toc:2 num:t
,#+LANGUAGE: zh-CN
,#+LATEX_CLASS: article
,#+LATEX_COMPILER: xelatex
;; 配置 PDF 导出(需要安装 xelatex)
(setq org-latex-pdf-process
'("xelatex -interaction nonstopmode -output-directory %o %f"
"bibtex %b"
"xelatex -interaction nonstopmode -output-directory %o %f"
"xelatex -interaction nonstopmode -output-directory %o %f"))
8.8 本章小结
| 功能 | 快捷键 | 说明 |
|---|---|---|
| 标题 | M-RET / M-←/→ | 新建、升降级 |
| TODO | C-c C-t / S-←/→ | 状态切换 |
| 日期 | C-c C-s / C-c C-d | 计划/截止日期 |
| 表格 | TAB / C-c C-c | 导航/计算公式 |
| 链接 | C-c C-l / C-c C-o | 创建/打开 |
| 导出 | C-c C-e | 多格式导出 |
| 代码块 | C-c C-c / C-c ' | 执行/编辑 |
8.9 扩展阅读
- Org-mode 官方手册
- Org-mode 快速入门
- System Crafters: Org-mode 教程
- Org-mode Cheat Sheet
- Carsten Dominik 的 Org-mode 讲座
← 上一章 第 07 章:文件操作 | 下一章 → 第 09 章:Org-mode 进阶