用 org roam 在 emacs 中写日记

介绍

思考问题并解决问题的最佳方式之一是与自己进行书面对话。通过本视频,您将了解如何记录一天的想法,将其链接到现有笔记,并轻松查看任何一天的笔记,全部使用 Org Roam。

如果你觉得这个指南有帮助, 请考虑通过链接 帮助 页 支持系统工匠!

开始配置

在我们开始之前,请确保您已经设置了 Org Roam。

您可以快速开始复制下面的配置,但如果您首先观看 Org Roam 系列的前两部视频,您将学到更多:

(use-package org-roam
  :ensure t
  :init
  (setq org-roam-v2-ack t)
  :custom
  (org-roam-directory "~/RoamNotes")
  (org-roam-completion-everywhere t)
  :bind (("C-c n l" . org-roam-buffer-toggle)
         ("C-c n f" . org-roam-node-find)
         ("C-c n i" . org-roam-node-insert)
         :map org-mode-map
         ("C-M-i" . completion-at-point)
         :map org-roam-dailies-map
         ("Y" . org-roam-dailies-capture-yesterday)
         ("T" . org-roam-dailies-capture-tomorrow))
  :bind-keymap
  ("C-c n d" . org-roam-dailies-map)
  :config
  (require 'org-roam-dailies) ;; Ensure the keymap is available
  (org-roam-db-autosync-mode))

配置说明

  • 请确保更新 org-roam-directory 的值以指向要存储 Org Roam 文件的路径。在加载配置之前创建该目录!
  • 此配置与前几集略有不同, org-roam-setup 函数已重命名为 org-roam-db-autosync-mode

创建日记条目文件夹

在我们可以创建和查看日记条目之前,我们首先需要确保文件夹存在。

默认情况下,Org Roam 将在 org-roam-directorydaily/ 子文件夹下创建每日文件。让我们创建那个文件夹!

如果您想要将此文件夹更改为不同的路径,可以如下设置 org-roam-dailies-directory:

(setq org-roam-dailies-directory "journal/")

此路径必须相对于 org-roam-directory!

为今天创建日记条目

配置 Org Roam 后,您可以运行命令 org-roam-dailies-capture-today,我们已将其绑定到 C-c n d n

我们正在使用现有的 org-roam-dailies-map 进行键绑定!

当您运行该命令时,将出现一个捕获窗口,用于名为当前日期的文件。在这里,您可以写任何您喜欢的内容,然后按 C-c C-c 保存条目或按 C-c C-k 取消捕获而不保存。

这个命令的好处是您可以再次运行它来捕获另一个条目,基本上允许您在整天创建条目。让我们试一试!

使用 Org Roam 记录日志的主要好处(而不是像 org-journal 一样)是您可以链接到 Org Roam 数据库中的任何其他笔记。我们可以使用 C-c n i 在前一集创建的 Scheme 条目中插入链接。

查看今天的日记条目

也许您想查看您今天已经写的日志条目。要实现这一点,可以运行命令 org-roam-dailies-goto-today,我们将其绑定为 C-c n d d

运行此命令时,将打开今天的日记文件,以便您可以阅读它并进行任何您喜欢的编辑。

该文件设置与任何其他 Org Roam 笔记相同。您也可以使用 C-c n f 访问它,甚至在其他笔记文件中插入到它的链接!

创建和查看昨天或明天的条目

您还可以从今天创建前一天或下一天的条目:

  • 使用 org-roam-dailies-capture-yesterday (C-c n d Y) 捕获昨天的笔记
  • 使用 org-roam-dailies-capture-tomorrow (C-c n d T) 捕获明天的笔记

这些命令对于写下前一天的结论性想法或为明天留言很有用!

也有命令导航到这些日子的条目:

  • 使用 org-roam-dailies-goto-yesterday (C-c n d y) 转到昨天的文件
  • 使用 org-roam-dailies-goto-tomorrow (C-c n d t) 转到明天的文件

创建和查看特定日期的条目

您可以使用以下命令创建或查看特定日期的笔记:

  • 使用 org-roam-dailies-capture-date (C-c n d v) 捕获特定日期的笔记
  • 使用 org-roam-dailies-goto-date (C-c n d c) 转到特定日期的文件

当您运行这两个命令中的任何一个时,会显示一个日历,让您选择要查看或创建条目的日期。只需按住 Shift 键并使用方向键在日历中移动!

您还可以从当前查看文件的日期向前或向后移动:

  • 使用 org-roam-dailies-goto-next-note (C-c n d b) 后退到现有的日期文件
  • 使用 org-roam-dailies-goto-previous-note (C-c n d f) 向前移动到现有的日期文件

为每个条目添加时间

如果您想为捕获的条目添加更多信息,可以自定义默认的捕获模板:

(setq org-roam-dailies-capture-templates
      '(("d" "default" entry "* %<%I:%M %p>: %?"
         :if-new (file+head "%<%Y-%m-%d>.org" "#+title: %<%Y-%m-%d>\n"))))

有关格式的更多信息,请参阅 format-time-string 的文档。

现在创建新的日常条目时,日期将显示在标题中。

您可以为日常条目创建更多捕获模板!我将在另一个视频中给出更多如何使用此内容的示例。

最终配置

以下是视频中显示的所有内容的最终配置:

(use-package org-roam
  :ensure t
  :init
  (setq org-roam-v2-ack t)
  :custom
  (org-roam-directory "~/RoamNotes")
  (org-roam-completion-everywhere t)
  (org-roam-dailies-capture-templates
    '(("d" "default" entry "* %<%I:%M %p>: %?"
       :if-new (file+head "%<%Y-%m-%d>.org" "#+title: %<%Y-%m-%d>\n"))))
  :bind (("C-c n l" . org-roam-buffer-toggle)
         ("C-c n f" . org-roam-node-find)
         ("C-c n i" . org-roam-node-insert)
         :map org-mode-map
         ("C-M-i" . completion-at-point)
         :map org-roam-dailies-map
         ("Y" . org-roam-dailies-capture-yesterday)
         ("T" . org-roam-dailies-capture-tomorrow))
  :bind-keymap
  ("C-c n d" . org-roam-dailies-map)
  :config
  (require 'org-roam-dailies) ;; Ensure the keymap is available
  (org-roam-db-autosync-mode))
订阅系统工匠通讯!
与最新的系统工匠新闻和更新保持同步! 阅读 Newsletter 浏览更多信息。
名称 (optional)
邮箱