有没有办法插入带有当前时间戳的组织模式模板?

Is there a way to insert org-mode template with current timestamp?

是否可以通过键入 <e 并点击 <TAB> 在 org-mode 中插入模板,这将导致:

:PROPERTIES:
:ERSTELLT: [2020-11-17 Di 21:18]
:END:

通过查看这些参考资料:

Org-mode template expansions for easy code block insertion

Creating Org Mode Structure Templates,

我能够定义自己的模板,但没有时间戳:

:PROPERTIES:
:ERSTELLT:
:END:

插入时间戳的函数是:(org-time-stamp '(16) t),但是它在 org-mode 启动时间进行评估并不断插入相同的时间戳:

(eval-after-load 'org
  '(progn
     (add-to-list 'org-structure-template-alist
          (list "r"
             (concat ":PROPERTIES:\n"
                     ":ERSTELLT: " (org-time-stamp '(16) t) "\n"
                     ":END:" )
             ))))

Emacs 版本:GNU Emacs 26.3 (build 1, i686-w64-mingw32) of 2020-04-03

组织模式版本:9.1.9 (release_9.1.9-65-g5e4542)

您最好为此定义一个捕获模板。这真的取决于你想做什么。通常,如果您简要概述您真正想要的 outcome/functionality 而不是您认为可能是解决方案的一部分,您会得到更好的答案。

Org 的捕获模板系统非常灵活且功能强大,可以轻松添加新条目、属性 抽奖、截止日期等。它还支持各种 %- 控制序列,用于执行设置等操作属性、添加活动和非活动时间戳、捕获链接、当前选择、剪贴板项目等。

下面是我的捕获模板定义的副本,供您参考。费用模板使用属性并设置属性,其他一些模板在各个地方的条目中添加时间戳。使用捕获模板还可以完成更多工作。

顺便说一句,我认为您对 org-time-stamp 函数的使用不符合您的要求。查看文档,但我认为您真正想要的当前时间戳是 (org-time-stamp t t)

(setq org-capture-templates
  (quote
   (("t" "todo" entry
     (file+headline "~/Documents/org-data/refile.org" "Tasks")
     "* TODO %?\n\n %a"
     :empty-lines-after 1)
    ("r" "respond" entry
     (file+headline "~/Documents/org-data/refile.org" "Tasks")
     "* NEXT Respond to %:from\n SCHEDULED: %t\n\n %:subject\n %i\n %? \n %a"
     :empty-lines-after 1)
    ("n" "note" entry
     (file "~/Documents/org-data/notes.org")
     "* %U %? :NOTE:\n\n %i\n %a"
     :empty-lines-after 1)
    ("p" "phone" entry
     (file+headline "~/Documents/org-data/refile.org" "Comms")
     "* Pone: %? :PHONE:\n\n"
     :empty-lines-after 1 :clock-in t :clock-resume t)
    ("e" "expense" entry
     (file+headline "~/Documents/org-data/refile.org" "Expenses")
     "* Expense: %^{Description} :EXPENSE:\n :PROPERTIES:\n :Description: %\1\n :Date: %u\n :Amount: %^{Amount}\n :END:\n\n | Date | %u |\n | Description | %\1 |\n | Amount | %\2 |\n"
     :empty-line-after 1)
    ("m" "mail" entry
     (file+headline "~/Documents/org-data/refile.org" "Comms")
     "* %U Mail:%? %:subject \n\n From %:from\n\n %i\n %a"
     :empty-lines-after 1))))

您将其视为模板有什么原因吗?

您似乎只是想插入一个 属性,您可以使用以下方法执行此操作:

(org-entry-put (point) "ERSTELLT" (format-time-string "[%Y-%M-%d %a %H:%M]" (float-time)))

这将在当前点下插入标题的 属性“ERSTELLT”(并在必要时创建一个新的 :PROPERTIES: 抽屉),并将当前纪元时间格式化为 org-mode 时间戳。如果你想要一个不同的时间戳,你可以用你想要代表纪元时间的任何整数替换 (float-time)

您无法像模板一样将属性抽屉插入任何您想要的位置,但我不确定您为什么需要考虑到属性抽屉仅作为标题的一部分才有意义。