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

Table of Contents
什么是笔记?
笔记核心功能:
输入: 记录
输出: 信息的提取与归纳
笔记类型举例
课堂笔记
学习心得, 复习笔记
读书笔记
数学草稿
科研日志, 灵感
教程/食谱/日记等, 例如: "如何安装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 的区别: 个人知识库不仅仅是知识的记录, 还有对知识的归纳和提炼 – 这由我们建立的 链接 体现
参考资料
How to take smart notes: Sönke Ahrens
(中文版) 卡片笔记写作法: https://book.douban.com/subject/35503571/.
系列视频内容
本期视频
安装与基本设置
今天以后大家可以用 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
卡片盒笔记是一种全新的笔记模式, 需要学习和练习才能掌握
特点是链接, 链接, 链接
链接帮助笔记自发地形成结构
链接是我们思想的结晶
我的 Emacs 设置可以在 https://gitee.com/mickey991/emacs-latex/tree/master/my-emacs-config 找到.