重构 org 文件(在不破坏链接的情况下移动数据)?

Refactoring org files (moving data without breaking links)?

我正在寻找某种工作流程,让我可以在不破坏 links 的情况下自由移动东西。

因为我几乎总是使用 org-store-linkorg-capture 到 link,所以我正在考虑这样的工作流程:

  1. 任何时候从 org 文件中调用 org-store-linkorg-capture,将 link 的确切副本插入 stored/captured 到当前文件中标题的属性。当然,我可能只有一个包装函数来执行插入,然后调用相应的 org 函数

  2. 在每次保存时,在当前文件中搜索与其当前位置不匹配的任何此类标识符。文件移动也会中断 links,因此脚本可能应该 运行 定期在所有组织文件上 - 也许在 emacs start-up.

  3. 如果找到任何 non-matches,则搜索指向旧标识符的后link,用新位置更新那些link ,然后将标识符本身更新到新位置。

一个辅助函数可以找到所有带有 org-links 但没有标识符的标题,这将帮助我为系统准备好我当前的组织文件。

在我开始之前,这听起来是不是个好主意,如何改进它,是否有人已经这样做了?

org-mode 有一个选项可以为每个条目分配一个唯一的 ID 并在链接中使用它。这使链接即使在移动目标时也能继续工作。将变量 org-id-link-to-org-use-id 设置为 t,id 将被创建并存储在 ID 属性 中。 org-insert-link 将插入 id:<id>.

的链接