UP | HOME

org-roam-tutorials

Table of Contents

Org Roam Manual

Base

setup

设置 org-roam 的根目录, org-roam 会递归搜索该目录下的所有文件。

(setq org-roam-directory (file-truename "~/org-roam"))

开启 org-roam db 自动同步,从而保证 org-roam 缓存内容和文件修改的一致性。

M-x org-roam-db-autosync-mode

create node

Common methods

org-roam-node-insert: 如果 Node 不存在则创建,并且在点插入一个到新 node 的链接 org-roam-node-find: 如果 Node 不存在则创建,并且会访问该 node org-roam-capture: 如果 Node 不存在则创建,完成后恢复当前窗口配置

Creating a heading node
执行下面命令可以为 Heading 添加ID

M-x org-id-get-create

delete node

只需要删除 node 对应的文件或 headline, 然后执行 M-x org-roam-db-sync 命令

add node link

auto

org-roam-node-insert 会列出所有 node,选择你要链接的 node,就会自动添加链接。如下:若没有列出所有 node,可执行 M-x org-roam-db-sync

[[id:5981fab1-59a5-4cec-b1f5-89f3a69de7da][emacs]
manual
[[roam:emacs][emacs]
org-roam会将上面链接自动转化为下面链接
[[id:5981fab1-59a5-4cec-b1f5-89f3a69de7da][emacs]

[[roam:Volumetric Fog: unified compute shader-based solution to atmospheric scattering][Volumetric Fog: unified compute shader-based solution to atmospheric scattering]]
org-roam会将上面链接自动转化为下面链接
[[id:a83ebf0d-8d7f-431c-b66b-f9903150b6b3][Volumetric Fog: unified compute shader-based solution to atmospheric scattering]

自定义 Completions buffer 中 node 的显示

org-roam-node-display-template 可以控制 node 的展示格式.

;; 显示node 的tags, tags 字符数量最高为100个字符
(setq org-roam-node-display-template
      (concat "${title:*} "
              (propertize "${tags:100}" 'face 'org-tag)))

node properties

standard org properties

org-roam 会缓存大部分标准的 org 属性。如下面的属性列表:

outline level todo state priority scheduled deadline tags

titles and aliases

每个 node 有单独一个 title。对于 file node 来说,通过 “#+title” 属性来指定。对于 headline node 来说,就是其文本内容。

node 可以有多个别名(aliases). 如下:

~*~ Artificial Intelligence

:PROPERTIES:
:ROAM_ALIASES: AI
:END:

org-roam-alias-add 添加 alias 命令 org-roam-alias-remove 删除 alias 命令

tags

file node 的 tags 来自于 ‘#+filetags’ headline 的 tags 就是常规的 org tags

headline node 会继承 file node 的 tags。

refs

refs 是 node 的唯一标识,可以将 refs 当作 node 的多个关键字。这些 keys 允许对该 key 的引用显示在 Org-roam 缓冲区内。例如,一个网站的节点可以使用 URL 作为 ref,而一篇论文的节点可以使用 Org-ref citation key。如下面,Google 网站节点使用 URL 作为 ref:

某篇文章中,
~* Google
:PROPERTIES:
:ID:       xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
:ROAM_REFS: https://www.google.com/
:END:

另一篇文章中:
[[https://www.google.com/][google website]]

你可以给一个 node 指定多个 ref,例如,当你想让一个系列的多篇论文共享同一个注解,或者一篇文章同时有一个 citation key and a URL。

org-roam-ref-add 为当前 node 添加 ref org-roam-ref-remove 为当前 node 删除 ref

Tips: 需要先为 node 添加 id,然后再执行上面命令,才能为当前鼠标所在的 node 添加 ref。

org roam buffer

激活 org-roam-buffer

执行 org-roam-buffer-toggle 命令,会打开 org-roam-buffer。其中会展示当前文件对应的 node 信息。

org-roam-buffer-toggle: 开启一个当前 node 对应的 Org-roam buffer. 当前对应的 node 变化时,该 buffer 内容会变化。 org-roam-buffer-display-dedicated: 为一个特定的 node 开启一个 org roam buffer, 并不访问其对应的文件. 可以有多个这样的专有 buffer,其内容不会随当前 node 的变化而变化。

org roam buffer 快捷键

M-{N}: magit-section-show-level-{N}-all n: magit-section-forward <TAB>: magit-section-toggle <RET>: org-roam-buffer-visit-thing r: org-roam-buffer-refresh

配置 org roam buffer 的内容

org roam buffer 可以展示一下三类内容

section type description
backlinks-section 链接到当前 node 的 node
reflinks-section 链接到当前 node 的 reference link node
unlinked-references-section 和当前节点的 title 或 alias 相匹配但是并没有通过 reference link node 链接到当前 node
(setq org-roam-mode-sections
      (list #'org-roam-backlinks-section
            #'org-roam-reflinks-section
            ;; #'org-roam-unlinked-references-section
            ))

Org Roam UI

setup


usage

Mx org-roam-ui-mode

Usage

使用 org roam 的目的是让 blog 能互相关联起来,形成知识网络。并且利用 org roam 提供的工具可以快速可视化这个知识网络。

当前记录笔记时,会将相关的内容都放到一个 org 文件中,导致单个 org 文件非常大,之后可以采用小文件方式来记录笔记,笔记通过 link 关联起来。下面以 unitycatlikecoding 系列笔记来说明。unitycatlikecoding 目前为一个非常大的 org 文件,可以将 unitycatlikecoding 系列的笔记类似原教程的组织方式拆分为多个主题,每个主题一个 org 文件,并按照下面方式来组织:

  1. 利用 tag 组织。这些 org 文件都分配 unitycatlikecoding tag,这样就可以利用该 tag 筛选出所有 unitycatlikecoding 相关的笔记。
  2. 利用 link 组织。有些 org 之间有相同的内容,可以通过 link 索引(为了让 org roam 识别这些关系,需要将索引的节点转化为 node)。

后续记录 gpu gem 笔记,gpu pro 笔记,都可以每一篇文章单独一个 org 文件。