7.1 Property Syntax

属性为键值对。当属性关联单个条目或某个树形结构时,需要插入到名为 ‘PROPERTIES’ 的专用收纳块中(参见 Drawers),该收纳块必须直接位于标题下方,若存在规划行则位于规划行下方(参见 Deadlines and Scheduling)。每个属性单独占一行,键名用冒号包裹并写在前面,其后为对应值。键名不区分大小写。示例如下:

* CD collection
** Classic
*** Goldberg Variations
    :PROPERTIES:
    :Title:     Goldberg Variations
    :Composer:  J.S. Bach
    :Artist:    Glenn Gould
    :Publisher: Deutsche Grammophon
    :NDisks:    1
    :END:

根据变量 org-use-property-inheritance 的取值,以此方式设置的属性可仅关联单个条目,或关联该条目对应的整个子树,详见 Property Inheritance

你可以通过定义 ‘Xyz_ALL’ 这一属性,指定特定属性 ‘Xyz’ 的允许取值。该特殊属性支持 继承(inherited) ,因此在一级条目中设置后,会作用于整个树形结构。定义允许取值后,设置对应属性会更简便,也能减少输入错误。以上述 CD 收藏为例,我们可以预先定义出版商与光盘数量:

* CD collection
  :PROPERTIES:
  :NDisks_ALL:  1 2 3 4
  :Publisher_ALL: "Deutsche Grammophon" Philips EMI
  :END:

属性可在缓冲区层级定义,即写在首个标题之前,可被文件中所有条目继承。首个标题前定义的属性块必须位于缓冲区顶部,其上方只能有注释。

也可通过如下格式的行定义属性:

#+PROPERTY: NDisks_ALL 1 2 3 4

若要为已有属性追加取值,可在属性名后添加 ‘+’ 。下述配置会使属性 ‘var’ 同时拥有 ‘foo’ 和 ‘bar’ 两个值。

#+PROPERTY: var  foo
#+PROPERTY: var+ bar

使用追加符号 ‘+’ ,也可以为继承的属性添加取值。下述配置会使 ‘Goldberg Variations’ 子树下的 ‘Genres’ 属性拥有 ‘Classic’ 、 ‘Baroque’ 和 ‘Keyboard music’ 三个值。

* CD collection
** Classic
    :PROPERTIES:
    :Genres: Classic
    :END:
*** Goldberg Variations
    :PROPERTIES:
    :Title:     Goldberg Variations
    :Composer:  J.S. Bach
    :Artist:    Glenn Gould
    :Publisher: Deutsche Grammophon
    :NDisks:    1
    :Genres+:   Baroque
    :Genres+:   Keyboard music
    :END:

注意:只有使用 ‘+’ 追加时,一个属性才能在同一个收纳块中存在多个取值。若同一属性无 ‘+’ 却重复定义,结果未定义。

通过全局变量 org-global-properties 设置的属性值,可被所有 Org 文件中的全部条目继承。

以下命令可用于操作属性:

M-TAB (pcomplete)

在行首输入冒号后,补全属性键名。会列出当前文件中使用过的所有键名作为候选项。

C-c C-x p (org-set-property)

设置属性。会提示输入属性名与取值,必要时自动创建属性收纳块。

C-u M-x org-insert-drawer

在当前条目插入属性收纳块。收纳块会插入在条目靠前位置,位于截止日期等规划信息行之后。若在首个标题前使用,则插入在缓冲区顶部注释之后。

C-c C-c (org-property-action)

光标位于属性收纳块内时,执行属性相关命令。

C-c C-c s (org-set-property)

为当前条目设置属性,属性名与取值均可通过补全输入。

S-RIGHT (org-property-next-allowed-value), S-LEFT (org-property-previous-allowed-value)

将光标所在属性切换为下一个/上一个允许取值。

C-c C-c d (org-delete-property)

从当前条目中移除指定属性。

C-c C-c D (org-delete-property-globally)

从当前文件所有条目中全局移除指定属性。

C-c C-c c (org-compute-property-at-point)

依据最近的列格式定义中的运算符与作用范围,计算光标处属性的取值。