You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写可生成文件名与标题属性的Org-capture模板?

解决Org-capture博客模板无法生成目标文件的问题

问题原因

你的代码无法正常生成指定目录下的Org文件,核心问题有两点:

  1. 用setq定义的title、date等变量作用域不对,Org-capture模板展开时无法正确读取这些值,导致内容输出到启动缓冲区而非目标文件。
  2. 缺少捕获完成后的自动处理配置,没有触发文件保存和跳转逻辑。

修正后的代码

(defun org-new-blog-post ()
  (let* ((date (format-time-string (org-time-stamp-format :long :inactive) (org-current-time)))
         (title (read-string "Post Title: "))
         (fname (org-hugo-slug title))
         (description (read-string "Description: "))
         (file-path (expand-file-name (format "%s.org" fname) "~/git/personal/blog/org/blog/")))
    ;; 将变量存入捕获上下文供模板调用
    (plist-put org-capture-plist :title title)
    (plist-put org-capture-plist :date date)
    (plist-put org-capture-plist :description description)
    file-path))

(setq org-capture-templates
      '(("n" "new post"
         plain
         (function org-new-blog-post)
         "#+title: %:title\n#+date: %:date\n#+description: %:description\n\n"
         :immediate-finish t)))

关键改动说明

  • 用let*定义局部变量,避免污染全局环境,同时保证变量按顺序赋值。
  • 通过org-capture-plist传递变量,模板中用%:title这类上下文变量引用,确保参数能正确传递到模板内容里。
  • 添加:immediate-finish t配置,捕获完成后自动保存文件并关闭临时缓冲区,直接跳转到新生成的博客文件。

内容的提问来源于stack exchange,提问作者peregrinator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:34:51