11.5 Commands in the Agenda Buffer

日程缓冲区中的条目会链接回其来源的 Org 文件或日记文件。你不能直接编辑日程缓冲区本身,但提供了相关命令用于显示并跳转到原始条目位置,以及从日程缓冲区 “远程(remotely)” 编辑 Org 文件。这样所有信息仅存储一份,避免日程与笔记文件内容不一致的风险。

部分命令可通过点击日程行执行,其他命令则需要将光标置于目标行。

Motion

n (org-agenda-next-line)

移动到下一行(与 DOWNC-n 功能相同)。

p (org-agenda-previous-line)

移动到上一行(与 UPC-p 功能相同)。

View/Go to Org file

SPCmouse-3 (org-agenda-show-and-scroll-up)

在另一个窗口中显示条目原始位置。带前缀参数时,确保抽屉保持折叠状态。

L (org-agenda-recenter)

显示原始位置并将该窗口居中。

TABmouse-2 (org-agenda-goto)

跳转到另一个窗口中的条目原始位置。

RET (org-agenda-switch-to)

跳转到条目原始位置并关闭其他窗口。

F (org-agenda-follow-mode)

切换跟随模式(Follow mode)。在跟随模式下,当你在日程缓冲区中移动光标时,另一个窗口会始终显示 Org 文件中对应位置。新建日程缓冲区时该模式的初始状态可通过变量 org-agenda-start-with-follow-mode 设置。

C-c C-x b (org-agenda-tree-to-indirect-buffer)

在间接缓冲区中显示当前条目的完整子树。带数字前缀参数 N 时,向上跳转至 N 级标题并取该子树;若 N 为负数,则向上跳转对应级数。带 C-u 前缀时,不删除此前使用的间接缓冲区。

C-c C-o (org-agenda-open-link)

打开条目中的链接。系统会列出所引用 Org 节点文本中的所有链接供选择;若仅有一个链接,则直接打开无需提示。

Change display

A

交互式选择另一个日程视图并追加到当前视图。

o

关闭其他窗口。

v d 或简写 d (org-agenda-day-view)

切换到日视图。切换为日视图后,该设置会成为后续刷新日程的默认视图。可使用数字前缀参数直接跳转到年内指定日期,例如 32 d 跳转到 2 月 1 日。设置日视图时,前缀参数中也可包含年份,例如 200712 d 跳转到 2007 年 1 月 12 日。若年份仅为一位或两位数字,会自动扩展为未来 30 年或过去 69 年内的对应年份。

v w or short w (org-agenda-week-view)

切换到周视图。切换为周视图后,该设置会成为后续刷新日程的默认视图。可使用数字前缀参数直接跳转到 ISO 周历指定周数,例如 9 w 跳转到第 9 个 ISO 周。设置周视图时,前缀参数中也可包含年份,例如 200712 w 跳转到 2007 年第 12 周。若年份仅为一位或两位数字,会自动扩展为未来 30 年或过去 69 年内的对应年份。

v m (org-agenda-month-view)

切换到月视图。由于月视图生成较慢,不会成为后续刷新日程的默认视图。可使用数字前缀参数直接跳转到当月指定日期。设置月视图时,前缀参数中也可包含年份,例如 200712 m 跳转到 2007 年 12 月。若年份仅为一位或两位数字,会自动扩展为未来 30 年或过去 69 年内的对应年份。

v y (org-agenda-year-view)

切换到年视图。由于年视图生成较慢,不会成为后续刷新日程的默认视图。可使用数字前缀参数直接跳转到年内指定日期。

v SPC (org-agenda-reset-view)

将当前视图重置为 org-agenda-span 指定的默认视图。

f (org-agenda-later)

向后跳转时间,显示当前时段之后的内容。例如当前显示一周,则切换到下一周。带前缀参数时,重复跳转对应次数。

b (org-agenda-earlier)

向前跳转时间,显示更早日期的内容。

. (org-agenda-goto-today)

跳转到今天。

j (org-agenda-goto-date)

提示输入日期并跳转到该日期。

J (org-agenda-clock-goto)

跳转到 日程缓冲区中(in the agenda buffer) 当前正在计时的任务。

D (org-agenda-toggle-diary)

切换是否包含日记条目。参见 Weekly/daily agenda

v lv L 或简写 l (org-agenda-log-mode)

切换日志簿模式。在日志簿模式下,开启日志记录时标记为完成的条目(参见变量 org-log-done )以及当日有计时记录的条目会显示在日程中。你可以通过变量 org-agenda-log-mode-items 配置日志模式中包含的条目类型。带 C-u 前缀参数调用时,显示所有可用日志簿条目,包括状态变更;带双重前缀参数 C-u C-u 调用时,仅显示日志信息,不显示其他内容。v L 等价于 C-u v l

v [ 或简写 [ (org-agenda-manipulate-query-add)

在当前视图中包含非活动时间戳,仅适用于每周/每日日程。

v a (org-agenda-archives-mode)

切换归档模式。在归档模式下,生成日程时也会扫描已归档的树(参见 Internal archiving)。再次按 v a 可退出归档模式。新建日程缓冲区时该模式的初始状态可通过变量 org-agenda-start-with-archives-mode 设置,其取值与 org-agenda-archives-mode 相同。

v A

切换归档模式,同时包含所有归档文件。

v R 或简写 R (org-agenda-clockreport-mode)

切换计时报表模式(Clockreport mode)。在计时报表模式下,每日/每周日程总会显示一个表格,包含当前日程视图覆盖时间范围与文件范围内的计时时长。新建日程缓冲区时该模式的初始状态可通过变量 org-agenda-start-with-clockreport-mode 设置。带前缀参数切换该模式时(即 C-u R),计时表格不会包含被日程过滤隐藏的条目100。另可参见变量 org-clock-report-include-clocking-taskorg-agenda-clock-report-header

v c

在当前日程范围内显示重叠计时条目、计时中断及其他计时问题,之后可跳转到计时行手动修正。可通过变量 org-agenda-clock-consistency-checks 自定义计时问题的判定规则。按 l 退出日志簿模式,返回正常日程显示。

v E 或简写 E (org-agenda-entry-text-mode)

切换条目文本模式。在条目文本模式下,日程行下方会显示其所引用 Org 标题的若干行内容,最大行数由变量 org-agenda-entry-text-maxlines 指定。带数字前缀参数调用该命令时,会临时将该数值修改为前缀参数值。

G (org-agenda-toggle-time-grid)

切换时间网格显示。另可参见变量 org-agenda-use-time-gridorg-agenda-time-grid

r (org-agenda-redo), g

重新生成日程缓冲区,例如在使用 S-LEFTS-RIGHT 修改条目时间戳后刷新显示。若缓冲区为全局 TODO 列表,前缀参数会用于生成特定 TODO 关键字的筛选列表。

C-x C-s 或简写 s (org-save-all-org-buffers)

保存当前 Emacs 会话中所有 Org 缓冲区,同时保存 ID 位置。

C-c C-x C-c (org-agenda-columns)

在日程缓冲区中启用列视图(参见 Column View)。列视图格式取自光标所在条目,若无则取日程视图中第一个条目,即原始缓冲区中该条目的格式(来自属性、 ‘COLUMNS’ 关键字或默认变量 org-columns-default-format )会在日程中使用。

C-c C-x > (org-agenda-remove-restriction-lock)

解除日程的限制锁定(若当前限制为某个文件或子树,参见 Agenda Files)。

M-UP (org-agenda-drag-line-backward)

将光标所在行向上拖动一行。带数字前缀参数时,向上拖动对应行数。

拖动日程行的效果在日程刷新后不会保留,也不会修改源 Org 文件。

M-DOWN (org-agenda-drag-line-forward)

将光标所在行向下拖动一行。带数字前缀参数时,向下拖动对应行数。

Remote editing

0--9

数字参数。

C-_ (org-agenda-undo)

撤销远程编辑命令带来的修改,同时在日程缓冲区与远程缓冲区中恢复变更。

t (org-agenda-todo)

修改条目 TODO 状态,同时更新日程与原始 Org 文件。前缀参数会传递给 org-todo 命令,例如 C-u 前缀会触发记录状态变更备注。

C-S-RIGHT (org-agenda-todo-nextset)

切换到下一组 TODO 关键字。

C-S-LEFT, org-agenda-todo-previousset

切换到上一组 TODO 关键字。

C-k (org-agenda-kill)

删除当前日程项及其在原始 Org 文件中对应的完整子树。若远程删除的文本超过一行,需要用户确认删除操作。参见变量 org-agenda-confirm-kill

C-c C-w (org-agenda-refile)

归栏光标所在条目。

C-c C-x C-a 或简写 a (org-agenda-archive-default-with-confirmation)

Archive the subtree corresponding to the entry at point using the default archiving command set in org-archive-default-command. When using the a key, confirmation is required.

C-c C-x a (org-agenda-toggle-archive-tag)

为当前标题切换归档标签(参见 Internal archiving)。

C-c C-x A (org-agenda-archive-to-archive-sibling)

将当前条目对应的子树移动到其 归档兄弟节点(archive sibling)

C-c C-x C-s 或简写 $ (org-agenda-archive)

归档当前标题对应的子树,即将条目移动到配置的归档位置,通常为另一个文件。

T (org-agenda-show-tags)

显示当前条目关联的所有标签。适用于已关闭 org-agenda-show-inherited-tags 但仍需临时查看标题全部标签的场景。

: (org-agenda-set-tags)

为当前标题设置标签。若日程中有活动区域,则为区域内所有标题统一修改标签。

, (org-agenda-priority)

为当前条目设置优先级。Org mode 会提示输入优先级字符,若输入 SPC,则移除条目中的优先级标记。

+S-UP (org-agenda-priority-up)

提高当前条目优先级。优先级会在原始缓冲区中修改,但日程不会重新排序,可按 r 键刷新。

-S-DOWN (org-agenda-priority-down)

降低当前条目优先级。

C-c C-x e 或简写 e (org-agenda-set-effort)

为当前条目设置耗时属性。

C-c C-z 或简写 z (org-agenda-add-note)

为条目添加备注。备注会被记录,并保存到状态变更备注的相同位置。根据 org-log-into-drawer 的设置,备注可能保存在抽屉内。

C-c C-a (org-attach)

所有附件相关命令的调度器。

C-c C-s (org-agenda-schedule)

为该条目设置计划时间。带前缀参数时,移除计划时间戳。

C-c C-d (org-agenda-deadline)

为该条目设置截止日期。带前缀参数时,移除截止日期。

S-RIGHT (org-agenda-do-date-later)

将当前行关联的时间戳向后调整一天。若日期已过,首次调用会将其改为今天。带数字前缀参数时,调整对应天数,例如 3 6 5 S-RIGHT 调整一年。带 C-u 前缀时,时间调整一小时;立即重复该命令,无需前缀也会继续按小时调整。带双重 C-u C-u 前缀时,按分钟调整。时间戳会在原始 Org 文件中修改,但不会直接反映在日程缓冲区,需按 rg 更新。

S-LEFT (org-agenda-do-date-earlier)

将当前行关联的时间戳向前调整一天。

> (org-agenda-date-prompt)

修改当前行关联的时间戳。选择 > 键是因为其在键盘上等价于 S-.

I (org-agenda-clock-in)

为当前条目开始计时。若已有计时正在运行,会先停止该计时。

O (org-agenda-clock-out)

停止此前启动的计时。

X (org-agenda-clock-cancel)

取消当前正在运行的计时。

J (org-agenda-clock-goto)

在另一个窗口跳转到正在运行的计时项。

k (org-agenda-capture)

功能类似 org-capture ,但使用光标所在日期作为捕获模板的默认日期。可设置 org-capture-use-agenda-date 使其成为 org-capture 的默认行为。

Bulk remote editing selected entries

m (org-agenda-bulk-mark)

标记光标所在条目以进行批量操作。若日程中有活动区域,则标记区域内条目;带数字前缀参数时,标记对应数量的连续条目。

* (org-agenda-bulk-mark-all)

标记所有可见日程条目以进行批量操作。

u (org-agenda-bulk-unmark)

取消条目批量操作标记。

U (org-agenda-bulk-unmark-all)

取消所有已标记条目的批量操作标记。

M-m (org-agenda-bulk-toggle)

切换光标所在条目的批量操作标记状态。

M-* (org-agenda-bulk-toggle-all)

切换所有条目的批量操作标记状态。

% (org-agenda-bulk-mark-regexp)

标记匹配正则表达式的条目以进行批量操作。

B (org-agenda-bulk-action)

批量操作:对日程中所有已标记条目执行操作。系统会提示输入另一个按键选择操作类型。B 的前缀参数会传递给 sd 命令,用于批量移除这些特殊时间戳。默认情况下,批量操作后标记会清除;若想保留标记,可将 org-agenda-bulk-persistent-marks 设置为 t ,或在提示框中按 p

p

切换标记持久化状态。

$

归档所有选中条目。

A

通过移动到对应归档兄弟节点的方式归档条目。

t

修改 TODO 状态。提示输入单个 TODO 关键字,并统一修改所有选中条目的状态,跳过阻塞检查且不记录日志备注—但保留时间戳。

+

为所有选中条目添加标签。

-

为所有选中条目移除标签。

s

为所有条目重新设置计划日期。若要将现有计划日期固定向后推移若干天,可在提示框中输入以双加号开头的格式,例如 ‘++8d’ 或 ‘++2w’ 。

d

设置截止日期为指定日期。

r

提示输入单个归栏目标并移动所有条目。这些条目会从日程中消失,刷新(g)后重新显示。

S

随机重新安排到未来 N 天内,N 由用户输入。带前缀参数(C-u B S)时,仅分散到工作日。

f

对标记条目应用自定义函数101。例如,以下函数将条目的 ‘CATEGORY’ 属性设为 ‘web’ 。

(defun set-category ()
  (interactive "P")
  (let ((marker (or (org-get-at-bol 'org-hd-marker)
                    (org-agenda-error))))
    (org-with-point-at marker
      (org-back-to-heading t)
      (org-set-property "CATEGORY" "web"))))

Calendar commands

c (org-agenda-goto-calendar)

打开 Emacs 日历并跳转到日程中光标所在日期。

c (org-calendar-goto-agenda)

在日历界面中,计算并显示光标所在日期的 Org 日程。

i (org-agenda-diary-entry)

使用光标所在日期(对于块条目则使用标记处日期)向日记中插入新条目,方式类似日历中的 i 命令,内容会添加到 Emacs 日记文件102。日记文件会在另一个窗口弹出,供你添加条目内容。

若将 org-agenda-diary-file 配置为某个 Org 文件,Org 会在该文件中创建条目。大多数条目会保存在基于日期的大纲树中,便于后续归档过往月份/年份的日程。该树构建在带有 ‘DATE_TREE’ 属性的条目下,若无则以年份作为顶级条目。Emacs 会提示输入条目文本——若直接输入内容,会在 org-agenda-diary-file 中自动创建条目无需额外操作;若在提示框中直接按 RET,目标文件会在另一个窗口显示,供你手动完成编辑。另可参见 k r 命令。

M (org-agenda-phases-of-moon)

显示当前日期前后三个月的月相。

S (org-agenda-sunrise-sunset)

显示日出日落时间。需通过日历变量设置地理位置,参见 Emacs 日历文档。

C (org-agenda-convert-date)

将光标所在日期转换为多种其他文化与历史历法日期。

H (org-agenda-holidays)

显示光标所在日期前后三个月的节假日。

Quit and exit

q (org-agenda-quit)

退出日程,关闭日程缓冲区。

x (org-agenda-exit)

退出日程,关闭日程缓冲区及所有为编译日程而加载的缓冲区,但不会关闭用户手动打开的 Org 文件缓冲区。


Footnotes

(100)

此处仅尊重标签过滤,忽略耗时过滤。

(101)

你也可以通过 org-agenda-bulk-custom-functions 创建持久化自定义函数。

(102)

当设置 org-agenda-include-diary 时,该文件会被日程解析。