從零搭建Emacs個(gè)人知識(shí)庫(kù): 什么是雙鏈筆記與 org-roam基本設(shè)置

Table of Contents
什么是筆記?
筆記核心功能:
輸入: 記錄
輸出: 信息的提取與歸納
筆記類型舉例
課堂筆記
學(xué)習(xí)心得, 復(fù)習(xí)筆記
讀書筆記
數(shù)學(xué)草稿
科研日志, 靈感
教程/食譜/日記等, 例如: "如何安裝Emacs", "如何做紅燒肉"
…
信息提取
從筆記高效地提取信息很難
紙質(zhì)筆記
優(yōu)點(diǎn): 簡(jiǎn)單
缺點(diǎn): 不能檢索
電子筆記: LaTeX, org, markdown 等
優(yōu)點(diǎn): 可全文搜索, 讀取信息能力大大提高
缺點(diǎn): 思考的過(guò)程, 知識(shí)間的聯(lián)系難以體現(xiàn).
傳統(tǒng)筆記的局限性
自上而下的樹狀結(jié)構(gòu)
樹狀結(jié)構(gòu)無(wú)處不在: 圖書館目錄, 文件夾, 書本章節(jié)段落
缺陷
輸入: 初始分類難
輸出: 不利于發(fā)現(xiàn)聯(lián)系
傳統(tǒng)筆記的完美形式就是一本書
但是現(xiàn)代人遇到問(wèn)題第一反應(yīng)不是去翻書, 而是用搜索引擎或 ChatGPT.
理想的筆記模型
雙鏈筆記: 原子化筆記 + 網(wǎng)狀結(jié)構(gòu)
原子化筆記: 將筆記拆分成獨(dú)立, 完整的小條目
網(wǎng)狀結(jié)構(gòu): 用 鏈接 串連筆記, 自下而上生成結(jié)構(gòu)
原型: 卡片盒筆記 (Zettlekasten)
盧曼 (Luhmann, 1927-1988): 德國(guó)社會(huì)學(xué)家
盧曼從1952年左右開始構(gòu)建卡片盒筆記, 最后筆記包含9萬(wàn)余條目
盧曼一生發(fā)表了50本著作與550篇論文
現(xiàn)代實(shí)現(xiàn)方式: 雙鏈筆記/個(gè)人知識(shí)庫(kù)軟件 (2020年前后)
Roam Research, Obsidian, Logseq, Notion …
在 Emacs 中: 基于 org-roam 的知識(shí)管理系統(tǒng)
為什么選擇 org-roam
… 而不是Roam Research,Obsedian,Logseq,Notion, …
我個(gè)人的筆記需求
簡(jiǎn)潔但強(qiáng)大的筆記功能, 包含 LaTeX 數(shù)學(xué)公式, 交叉引用
支持雙鏈筆記
能與文獻(xiàn)管理軟件如 Zotero 整合
可視化界面; 易于導(dǎo)出為其它形式
筆記軟件比較
Roam Research: 創(chuàng)建于2020.1., 雙鏈+圖形界面, 訂閱制 (基礎(chǔ)版 180$/年)
Obsidian: 創(chuàng)建于 2020.3. 基于 Markdown 文件, 有強(qiáng)大插件生態(tài), 基礎(chǔ)版免費(fèi), 全平臺(tái)使用
Logseq: 創(chuàng)建于 2020. 開源, 基于 Markdown 或 org 文件. 與 Obsedian 非常像
org-mode + Emacs
本身強(qiáng)大的文本處理能力與筆記生態(tài)
個(gè)性化設(shè)置
與其它工作流程的整合
底層結(jié)構(gòu)是純文本, 易于保存和導(dǎo)出
開源軟件, 永久免費(fèi), 強(qiáng)大的插件生態(tài), 上限和自由度很高
終生個(gè)人知識(shí)庫(kù): 平臺(tái)也需要有強(qiáng)大的生命力, Emacs 有近40年歷史
個(gè)人知識(shí)庫(kù)的構(gòu)建
核心: 筆記間的 鏈接
筆記類型
靈感筆記 (fleeting note)
文獻(xiàn)筆記 (literature note)
永久筆記 (pernament note)
自下而上生成結(jié)構(gòu): 一組產(chǎn)生密切聯(lián)系的筆記自然而然形成一個(gè)主題, 一個(gè)主題可以形成一條新的永久筆記并與其它筆記產(chǎn)生聯(lián)系. 主題的結(jié)合可以產(chǎn)生新的主題, 如此反復(fù).
與個(gè)人 wiki 的區(qū)別: 個(gè)人知識(shí)庫(kù)不僅僅是知識(shí)的記錄, 還有對(duì)知識(shí)的歸納和提煉 – 這由我們建立的 鏈接 體現(xiàn)
參考資料
How to take smart notes: S?nke Ahrens
(中文版) 卡片筆記寫作法: https://book.douban.com/subject/35503571/.
系列視頻內(nèi)容
本期視頻
安裝與基本設(shè)置
今天以后大家可以用 org-roam 記錄學(xué)習(xí) org-roam 的筆記
與 Zotero 文獻(xiàn)管理整合 (org-ref, helm-bibtex, org-roam-bibtex)
與 org-noter 整合
筆記模板設(shè)置
org 筆記流程優(yōu)化
數(shù)學(xué)公式 (org-cdlatex, org-preview)
自動(dòng)補(bǔ)全 (company)
中文輸入法 (pyim)
交叉引用 (org-ref)
org 界面優(yōu)化 (org-modern, org-face …)
項(xiàng)目管理
任務(wù)管理 (org-agenda)
日記系統(tǒng) (org-roam-daily)
可視化 (org-roam-ui)
導(dǎo)出設(shè)置
……
org-roam 安裝
以Emacs 28為準(zhǔn)
gcc 編譯器: 用于編譯 emacsql-sqlite (Emacs 29后應(yīng)該不再需要)
Windows 下可通過(guò) msys2 安裝 (推薦), 并保證在系統(tǒng)可執(zhí)行文件目錄下
Linux 或 MacOS 下大概率系統(tǒng)自帶
org-roam 插件
用內(nèi)置的 package-el 安裝: M-x package-install <return> org-roam <return>
use-package 模塊中 :ensure t (見后面示例)
org-roam-ui 插件
用內(nèi)置的 package-el 安裝: M-x package-install <return> org-roam-ui <return>
use-package 模塊中 :ensure t (見后面示例)
emacsql-sqlite
安裝后第一次加載 org-roam, Emacs 會(huì)提示正在編譯 emacsql-sqlite, 請(qǐng)耐心等待.
編譯成功后系統(tǒng)中會(huì)找到類似 .emacs.d/elpa/emacsql-sqlite-XXXXX/sqlite 的目錄
基本設(shè)置
筆記目錄: 需要提前手動(dòng)創(chuàng)建, 要易于同步;
日記設(shè)置: 目錄與快捷鍵
快捷鍵: 使用任何一個(gè)將會(huì)啟動(dòng) org-roam
創(chuàng)建筆記及鏈接
創(chuàng)建鏈接是最基礎(chǔ)也是最重要的功能!
org-roam-capture (快捷鍵 C-c n c) 創(chuàng)建一條新筆記. 未來(lái)可以預(yù)設(shè)不同主題的默認(rèn)模板. 每一條筆記就是一個(gè) org 文件
org-roam-find (快捷鍵 C-c n f) 通過(guò)關(guān)鍵詞查找筆記并跳轉(zhuǎn)
org-roam-insert (快捷鍵 C-c n i) 插入一條筆記的鏈接
在查找筆記時(shí)利用 org-roam-find 的界面
若筆記不存在, 則利用 org-roam-capture 的界面創(chuàng)建筆記
刪除筆記: 直接刪除筆記文件即可, 如 M-x delete-file
org-mode 內(nèi)鏈接跳轉(zhuǎn): 鼠標(biāo)點(diǎn)擊或 C-c C-o (org-open-at-point)
加入標(biāo)簽: 普通的標(biāo)簽可以看作一個(gè)特殊的筆記條目, 可以用 org-roam-insert 去插入一些以關(guān)鍵字為標(biāo)題的筆記充當(dāng)標(biāo)簽.
一個(gè)通用慣例是在筆記頭部用 org 的列表格式羅列標(biāo)簽, 如
以后我們也可以把這一行加入筆記模板
優(yōu)化 minibuffer 補(bǔ)全界面
vertico + orderless
同步
org-roam 的筆記文件是純文本文件, 用任意網(wǎng)盤同步即可
不同機(jī)器上要設(shè)置好 org-roam-directory 變量 (或者直接放在網(wǎng)盤目錄下)
也可以用 git 同步: 可控制文件類型, 版本控制
一般不需要同步數(shù)據(jù)庫(kù)文件 org-roam.db.
此數(shù)據(jù)庫(kù)文件保存了鏈接信息, 一般保存在 ./emacs.d/ 目錄下
當(dāng)筆記條目很多的時(shí)候, 這個(gè)文件會(huì)很大
在不同的機(jī)器上可以根據(jù) org 文件自動(dòng)生成的 ((org-roam-db-autosync-mode))
數(shù)據(jù)庫(kù)更新
執(zhí)行 M-x org-roam-db-sync
Windows 下執(zhí)行這一命令可能會(huì)出現(xiàn) Error ....... Selecting deleted buffer 的錯(cuò)誤信息. 只要 emacs-sqlite 已經(jīng)正常安裝, 無(wú)視這條錯(cuò)誤信息并再次執(zhí)行 org-roam-db-sync 即可.
自動(dòng)更新: 通過(guò) (org-roam-db-autosync-mode) 實(shí)現(xiàn)
手動(dòng)更新
結(jié)語(yǔ)
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
卡片盒筆記是一種全新的筆記模式, 需要學(xué)習(xí)和練習(xí)才能掌握
特點(diǎn)是鏈接, 鏈接, 鏈接
鏈接幫助筆記自發(fā)地形成結(jié)構(gòu)
鏈接是我們思想的結(jié)晶
我的 Emacs 設(shè)置可以在 https://gitee.com/mickey991/emacs-latex/tree/master/my-emacs-config 找到.