【问题标题】:Org-Mode - How do I create a new file with org-capture?Org-Mode - 如何使用 org-capture 创建新文件?
【发布时间】:2012-08-10 13:24:15
【问题描述】:

我想创建一个 org-capture 模板,该模板创建一个动态文件名,以便在 emacs org-mode 中进行捕获。

我希望文件名采用以下形式: (format-time-string "%Y-%m-%d") "-" (提示输入名称) ".txt"

示例:2012-08-10-MyNewFile.txt

基于this 的回答,我知道如何动态创建包含日期的文件名称:

`(defun capture-report-date-file (path)
(expand-file-name (concat path (format-time-string "%Y-%m-%d") ".txt")))

'(("t" "todo" entry (file (capture-report-date-file  "~/path/path/name"))
"* TODO")))

这允许我创建一个文件 2012-08-10.txt 并在第一行插入 * TODO

如何添加提示以完成文件名?

【问题讨论】:

    标签: emacs org-mode


    【解决方案1】:

    您必须在capture-report-data-file 中使用(read-string ...) 来动态生成文件名。

    (defun capture-report-date-file (path)
      (let ((name (read-string "Name: ")))
        (expand-file-name (format "%s-%s.txt"
                                  (format-time-string "%Y-%m-%d")
                                  name) path)))
    
    '(("t"
       "todo"
       entry
       (file (capture-report-date-file  "~/path/path/name"))
       "* TODO")))
    

    这将在捕获时提示输入文件名,然后打开将创建捕获缓冲区。

    【讨论】:

    • 非常感谢乔纳森。这是完美的。
    • 这对我不起作用。我只是收到“无效文件”错误?
    • 这对我也不起作用,正在寻找解决方案。它返回“无效的文件位置:nil”。这是在“(setq org-capture-templates”之后出现的吗?谢谢!
    【解决方案2】:

    我使用下面的模板和函数来创建新文件。

      (defun psachin/create-notes-file ()
        "Create an org file in ~/notes/."
        (interactive)
        (let ((name (read-string "Filename: ")))
          (expand-file-name (format "%s.org"
                                      name) "~/notes/")))
    
    
    
       (setq org-capture-templates
         '(("n" "Notes" entry
            (file psachin/create-notes-file)
           "* TITLE%?\n %U")))
    

    【讨论】:

    • 谢谢。这是否仅适用于捕获模板或仅通过直接调用函数=
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多