我同意 Stuart 的观点——我认为 org-id 中没有任何东西可以自动执行此操作,所以它真的归结为您何时想要添加 id。
如果您使用org-capture添加所有项目,那么org-capture-prepare-finalize-hook
放置代码的逻辑位置是:
(add-hook 'org-capture-prepare-finalize-hook 'org-id-get-create)
或者,您可以按照 Stuart 的建议进行操作,并为 org-mode 文件添加一个保存挂钩。我认为处理文件中所有标题的最惯用方法是使用映射 API:
(defun my/org-add-ids-to-headlines-in-file ()
"Add ID properties to all headlines in the current file which
do not already have one."
(interactive)
(org-map-entries 'org-id-get-create))
最后我们只需要添加一个before-save-hook
只在 org-mode 下运行的:
(add-hook 'org-mode-hook
(lambda ()
(add-hook 'before-save-hook 'my/org-add-ids-to-headlines-in-file nil 'local)))
应该这样做!