2.6 Plain Lists

在大纲树的条目内部,手动格式化的列表可提供额外结构, 也可用于创建复选框列表(见 Checkboxes)。 Org 支持编辑此类列表,所有导出器(见 Exporting)均可解析并格式化。

Org 支持有序列表、无序列表与描述列表。

同属一个列表的项,首行缩进必须一致。 特别地,有序列表编号达到 ‘10.’ 时,两位数字需与列表中其他数字左对齐。 当某行缩进小于或等于项目符号/数字的缩进时,当前项结束。

当所有项均结束时,即遇到缩进小于或等于顶层项缩进的行时,列表结束。 连续两个空行也会结束列表,此时所有项均视为闭合。示例如下:

* Lord of the Rings
My favorite scenes are (in this order)
1. The attack of the Rohirrim
2. Eowyn's fight with the witch king
   + this was already my favorite scene in the book
   + I really like Miranda Otto.
3. Peter Jackson being shot by Legolas
   - on DVD only
   He makes a really funny face when it happens.
8. [@8] <favorite scenes 4 to 8 are skipped for brevity>
But in the end, no individual scenes matter but the film as a whole.
Important actors in this film are:
- Elijah Wood :: He plays Frodo
- Sean Astin :: He plays Sam, Frodo's friend.  I still remember him
     very well from his role as Mikey Walsh in /The Goonies/.

Org 通过优化填充与自动换行命令适配列表,并正确导出(见 Exporting)。 由于缩进决定列表结构,许多结构块(如 ‘#+BEGIN_’ 块)可通过缩进表明归属某一项。

若希望子列表使用与当前层级不同的项目符号以提升可读性, 可自定义变量 org-list-demote-modify-bullet 。 若希望项与子项缩进差异更大,可自定义 org-list-indent-offset

下列命令在光标位于项首行(含项目符号或数字的行)时生效。 部分命令会应用自动规则以保持列表结构完整。 若某些行为不符合需求,可配置 org-list-automatic-rules 单独禁用。

TAB (org-cycle)

列表项可像标题层级一样折叠显示。通常仅当光标在普通列表项上时生效。 更多细节见变量 org-cycle-include-plain-lists 。 若该变量设为 integrate ,普通列表项将被视为低级标题, 项的层级由项目符号/数字的缩进决定。 但列表项始终从属于真实标题,两者层级完全分离。 在尚无内容的新项中,首次按下 TAB 会将该项降级为前一项的子项, 后续按下 TAB 会在列表中切换有效层级,最终回到初始位置。

M-RET (org-insert-item)

在当前层级插入新项。搭配前缀参数时,强制插入新标题(见 Structure Editing)。 若在项中间执行,该项会 拆分 为两部分,后半部分成为新项13。 若在项正文之前执行,新项会插入到当前项 之前

M-S-RET

插入带复选框的新项(见 Checkboxes)。

S-UP, S-DOWN

跳转到当前列表的上一个/下一个项,但仅当 org-support-shift-select 关闭时生效14。 未关闭时,可使用 C-UPC-DOWN 等段落跳转命令实现类似效果。

M-UP, M-DOWN

将项及其子项整体上移/下移15, 即与同缩进的上一个/下一个项交换位置。若为有序列表,会自动重新编号。

M-LEFT, M-RIGHT

减小/增大项的缩进,子项保持不变。

M-S-LEFT, M-S-RIGHT

减小/增大项及其所有子项的缩进。 初始时根据当前缩进选择项树,连续多次执行时, 即使新缩进对应不同层级,仍使用初始选中区域。 若要应用新层级,需移动光标中断连续操作。

特殊情况:在列表首个项上执行该命令会移动整个列表。 可通过配置 org-list-automatic-rules 禁用该行为。 列表的整体缩进不影响列表 的文本。

C-c C-c

若项行包含复选框(见 Checkboxes),切换复选框状态。 无论何种情况,都会检查整个列表的项目符号与缩进一致性。

C-c -

将整个列表层级循环切换为不同项目符号( ‘-’ 、 ‘+’ 、 ‘*’ 、 ‘1.’ 、 ‘1)’ )或其子集, 具体取决于 org-plain-list-ordered-item-terminator 、列表类型与缩进。 搭配数字前缀参数 N 时,选择列表中第 N 种项目符号。 执行时若存在激活区域,将所有行转为列表项。 搭配前缀参数时,选中文本转为单个项。 若首行已是列表项,则移除所有项标记。 即使无激活区域,普通行也会转为列表项。

C-c *

将普通列表项转为标题,即在当前位置成为子标题。 详细说明见 Structure Editing

C-c C-*

将整个普通列表转为当前标题的子树。 复选框(见 Checkboxes)未选中时转为 ‘TODO’ 关键字,选中时转为 ‘DONE’ 关键字。

S-LEFT, S-RIGHT

当光标在项目符号上或项行任意位置时,该命令也会循环切换项目符号样式, 具体细节取决于 org-support-shift-select

C-c ^

对普通列表排序。提示选择排序方式:数字、字母、时间或自定义函数。


Footnotes

(9)

使用 ‘*’ 作为项目符号时,行首必须缩进,避免被识别为标题。此外,若隐藏前导星号以获得整洁的大纲视图,以星号开头的普通列表项可能难以与真正的标题区分。简而言之:尽管 ‘*’ 受支持,但仍建议不要将其用于普通列表项。

(10)

可通过配置 org-plain-list-ordered-item-terminator 禁用其中一种形式。

(11)

可通过配置 org-list-allow-alphabetical 启用 ‘a.’ 、 ‘A.’ 、 ‘a)’ 、 ‘A)’ 等序号格式。为避免与普通文本混淆,此类序号仅限单个字符,超出长度后会自动变为数字序号。

(12)

若列表项中包含复选框,统计标记必须置于复选框 之前 。若已启用字母序号列表,也可使用 ‘[@b]’ 这类计数器。

(13)

若不希望拆分项,可自定义变量 org-M-RET-may-split-line

(14)

若希望以此循环切换项,可自定义 org-list-use-circular-motion

(15)

循环行为见 org-list-use-circular-motion