强曰为道

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

第 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 操作

快捷键说明
aAgenda 日/周视图
tTODO 列表
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-←/→新建、升降级
TODOC-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 扩展阅读


← 上一章 第 07 章:文件操作 | 下一章 → 第 09 章:Org-mode 进阶