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 命令
- how to delete a node https://www.reddit.com/r/OrgRoam/comments/smqq7t/how_to_delete_a_node/
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 文件,并按照下面方式来组织:
- 利用 tag 组织。这些 org 文件都分配 unitycatlikecoding tag,这样就可以利用该 tag 筛选出所有 unitycatlikecoding 相关的笔记。
- 利用 link 组织。有些 org 之间有相同的内容,可以通过 link 索引(为了让 org roam 识别这些关系,需要将索引的节点转化为 node)。
后续记录 gpu gem 笔记,gpu pro 笔记,都可以每一篇文章单独一个 org 文件。