Emacs 重构组织文件(在不中断链接的情况下移动数据)?

Emacs 重构组织文件(在不中断链接的情况下移动数据)?,emacs,hyperlink,refactoring,org-mode,break,Emacs,Hyperlink,Refactoring,Org Mode,Break,我正在寻找一种工作流程,它可以让我在不破坏链接的情况下自由移动东西 由于我几乎总是使用org-store-link或org-capture链接到任何东西,因此我正在考虑这样的工作流: 每当从组织文件调用org-store-link或org-capture时,将存储/捕获的确切链接的副本插入当前标题的属性中。当然,我可能只是有一个包装器函数来进行插入,然后调用相应的org函数 每次保存时,在当前文件中搜索与当前位置不匹配的任何此类标识符。文件移动也会中断链接,因此脚本可能会定期在所有组织文件上运行

我正在寻找一种工作流程,它可以让我在不破坏链接的情况下自由移动东西

由于我几乎总是使用
org-store-link
org-capture
链接到任何东西,因此我正在考虑这样的工作流:

  • 每当从组织文件调用
    org-store-link
    org-capture
    时,将存储/捕获的确切链接的副本插入当前标题的属性中。当然,我可能只是有一个包装器函数来进行插入,然后调用相应的
    org
    函数

  • 每次保存时,在当前文件中搜索与当前位置不匹配的任何此类标识符。文件移动也会中断链接,因此脚本可能会定期在所有组织文件上运行——可能是在emacs启动时

  • 如果找到任何不匹配项,则搜索指向旧标识符的反向链接,用新位置更新这些反向链接,然后将标识符本身更新到新位置

  • 一个助手函数可以找到所有标题,这些标题都有组织链接,但没有标识符,这将帮助我为系统准备好当前的组织文件


    在我开始之前,这听起来像是个好主意吗?如何改进,还有其他人已经做了吗?

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

    谢谢。这会帮我找到我想要的东西<代码>组织id get create也会有帮助。我发现了一些奇怪的东西。调用
    org id get create
    一次后,任何时候使用
    org store link
    org capture
    ,都会自动调用
    org id get create
    。这正是我想要的功能,但我不明白为什么第一次必须手动调用它。有人知道吗?这是因为默认情况下,
    org id链接到org use id
    nil
    。一旦在缓冲区中激活ID,不依赖它就没有意义了。