专栏/从零搭建Emacs个人知识库: 什么是双链笔记与 org-roam基本设置

从零搭建Emacs个人知识库: 什么是双链笔记与 org-roam基本设置

2023年04月16日 01:46--浏览 · --喜欢 · --评论
粉丝:1582文章:8

Table of Contents

  1. 什么是笔记?

  2. 信息提取

  3. 传统笔记的局限性

  4. 理想的笔记模型

  5. 为什么选择 org-roam

    1. 我个人的笔记需求

    2. 笔记软件比较

  6. 个人知识库的构建

  7. 系列视频内容

  8. org-roam 安装

  9. 基本设置

  10. 创建笔记及链接

  11. 优化 minibuffer 补全界面

  12. 同步

  13. 结语

本文最新版:https://mickey991.gitee.io/pkm/pkm-ep00-intro-org-roam/

什么是笔记?

笔记核心功能:

  • 输入: 记录

  • 输出: 信息的提取与归纳

笔记类型举例

  • 课堂笔记

  • 学习心得, 复习笔记

  • 读书笔记

  • 数学草稿

  • 科研日志, 灵感

  • 教程/食谱/日记等, 例如: "如何安装Emacs", "如何做红烧肉"


信息提取

从笔记高效地提取信息很难

  • 纸质笔记

    • 优点: 简单

    • 缺点: 不能检索

  • 电子笔记: LaTeX, org, markdown 等

    • 优点: 可全文搜索, 读取信息能力大大提高

    • 缺点: 思考的过程, 知识间的联系难以体现.


传统笔记的局限性

  • 自上而下的树状结构

    • 树状结构无处不在: 图书馆目录, 文件夹, 书本章节段落

  • 缺陷

    • 输入: 初始分类难

    • 输出: 不利于发现联系

  • 传统笔记的完美形式就是一本书

  • 但是现代人遇到问题第一反应不是去翻书, 而是用搜索引擎或 ChatGPT.


理想的笔记模型

  • 双链笔记: 原子化笔记 + 网状结构

    • 原子化笔记: 将笔记拆分成独立, 完整的小条目

    • 网状结构: 用 链接 串连笔记, 自下而上生成结构

  • 原型: 卡片盒笔记 (Zettlekasten)

    • 卢曼 (Luhmann, 1927-1988): 德国社会学家

    • 卢曼从1952年左右开始构建卡片盒笔记, 最后笔记包含9万余条目

    • 卢曼一生发表了50本著作与550篇论文

  • 现代实现方式: 双链笔记/个人知识库软件 (2020年前后)

    • Roam Research, Obsidian, Logseq, Notion …

    • 在 Emacs 中: 基于 org-roam 的知识管理系统


为什么选择 org-roam

… 而不是Roam Research,Obsedian,Logseq,Notion, …


我个人的笔记需求

  • 简洁但强大的笔记功能, 包含 LaTeX 数学公式, 交叉引用

  • 支持双链笔记

  • 能与文献管理软件如 Zotero 整合

  • 可视化界面; 易于导出为其它形式


笔记软件比较

  • Roam Research: 创建于2020.1., 双链+图形界面, 订阅制 (基础版 180$/年)

  • Obsidian: 创建于 2020.3. 基于 Markdown 文件, 有强大插件生态, 基础版免费, 全平台使用

  • Logseq: 创建于 2020. 开源, 基于 Markdown 或 org 文件. 与 Obsedian 非常像

  • org-mode + Emacs

    • 本身强大的文本处理能力与笔记生态

    • 个性化设置

    • 与其它工作流程的整合

    • 底层结构是纯文本, 易于保存和导出

    • 开源软件, 永久免费, 强大的插件生态, 上限和自由度很高

    • 终生个人知识库: 平台也需要有强大的生命力, Emacs 有近40年历史


个人知识库的构建

  • 核心: 笔记间的 链接

  • 笔记类型

    • 灵感笔记 (fleeting note)

    • 文献笔记 (literature note)

    • 永久笔记 (pernament note)

  • 自下而上生成结构: 一组产生密切联系的笔记自然而然形成一个主题, 一个主题可以形成一条新的永久笔记并与其它笔记产生联系. 主题的结合可以产生新的主题, 如此反复.

  • 与个人 wiki 的区别: 个人知识库不仅仅是知识的记录, 还有对知识的归纳和提炼 – 这由我们建立的 链接 体现

  • 参考资料


系列视频内容

  • 本期视频

    • 安装与基本设置

    • 今天以后大家可以用 org-roam 记录学习 org-roam 的笔记

  • 与 Zotero 文献管理整合 (org-ref, helm-bibtex, org-roam-bibtex)

  • 与 org-noter 整合

  • 笔记模板设置

  • org 笔记流程优化

    • 数学公式 (org-cdlatex, org-preview)

    • 自动补全 (company)

    • 中文输入法 (pyim)

    • 交叉引用 (org-ref)

    • org 界面优化 (org-modern, org-face …)

  • 项目管理

  • 任务管理 (org-agenda)

  • 日记系统 (org-roam-daily)

  • 可视化 (org-roam-ui)

  • 导出设置

……


org-roam 安装

以Emacs 28为准

  • gcc 编译器: 用于编译 emacsql-sqlite (Emacs 29后应该不再需要)

    • Windows 下可通过 msys2 安装 (推荐), 并保证在系统可执行文件目录下

    • Linux 或 MacOS 下大概率系统自带

  • org-roam 插件

    • 用内置的 package-el 安装: M-x package-install <return> org-roam <return>

    • use-package 模块中 :ensure t (见后面示例)

  • org-roam-ui 插件

    • 用内置的 package-el 安装: M-x package-install <return> org-roam-ui <return>

    • use-package 模块中 :ensure t (见后面示例)

  • emacsql-sqlite

    • 安装后第一次加载 org-roam, Emacs 会提示正在编译 emacsql-sqlite, 请耐心等待.

    • 编译成功后系统中会找到类似 .emacs.d/elpa/emacsql-sqlite-XXXXX/sqlite 的目录


基本设置

  • 笔记目录: 需要提前手动创建, 要易于同步;

  • 日记设置: 目录与快捷键

  • 快捷键: 使用任何一个将会启动 org-roam


创建笔记及链接

创建链接是最基础也是最重要的功能!

  • org-roam-capture (快捷键 C-c n c) 创建一条新笔记. 未来可以预设不同主题的默认模板. 每一条笔记就是一个 org 文件

  • org-roam-find (快捷键 C-c n f) 通过关键词查找笔记并跳转

  • org-roam-insert (快捷键 C-c n i) 插入一条笔记的链接

    • 在查找笔记时利用 org-roam-find 的界面

    • 若笔记不存在, 则利用 org-roam-capture 的界面创建笔记

  • 删除笔记: 直接删除笔记文件即可, 如 M-x delete-file

  • org-mode 内链接跳转: 鼠标点击或 C-c C-o (org-open-at-point)

  • 加入标签: 普通的标签可以看作一个特殊的笔记条目, 可以用 org-roam-insert 去插入一些以关键字为标题的笔记充当标签.

    一个通用惯例是在笔记头部用 org 的列表格式罗列标签, 如

以后我们也可以把这一行加入笔记模板


优化 minibuffer 补全界面

vertico + orderless


同步

  • org-roam 的笔记文件是纯文本文件, 用任意网盘同步即可

    • 不同机器上要设置好 org-roam-directory 变量 (或者直接放在网盘目录下)

    • 也可以用 git 同步: 可控制文件类型, 版本控制

  • 一般不需要同步数据库文件 org-roam.db.

    • 此数据库文件保存了链接信息, 一般保存在 ./emacs.d/ 目录下

    • 当笔记条目很多的时候, 这个文件会很大

    • 在不同的机器上可以根据 org 文件自动生成的 ((org-roam-db-autosync-mode))

  • 数据库更新

    • 执行 M-x org-roam-db-sync

    • Windows 下执行这一命令可能会出现 Error ....... Selecting deleted buffer 的错误信息. 只要 emacs-sqlite 已经正常安装, 无视这条错误信息并再次执行 org-roam-db-sync 即可.

    • 自动更新: 通过 (org-roam-db-autosync-mode) 实现

    • 手动更新


结语

A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system. – Gall's Law


投诉或建议