得益于 Emacs 的扩展性,丰富的插件生态,我构建的笔记和 GTD 流程是杂糅在一起的。并没有完全遵照「卡片笔记法」或 GTD 的流程,其中也有不完善的地方,在不断地使用中对流程进行改动,细微处调整。

笔记流程和 GTD 杂糅在一起,就意味着他们必须能够循环自洽,其中自动的步骤是黏合剂,手动的部分是思考的平台。

输入先不谈杂七杂八的各种途径,比较规整的输入途径有 RSS 和书籍。其中 RSS 可以订阅各类博客、YouTube 等,Podcast 其实也可以在 Emacs 当中听,但一般都是在非工作时间才会听 Podcast,这里略过不谈。

博客就单纯通过 elfeed 订阅,elfeed 本身没有查看订阅列表以及每个订阅源最近的更新时间,但是 Emacs 最自由的就是可以通过自定义函数实现。其中我根据不同的 tag 加了不同的 face,可以理解成 CSS 当中对于页面元素添加了样式,这样可以更为专注地分类阅读。

Figure 1: elfeed-list

Figure 1: elfeed-list

在这之前书籍和 RSS 的处理是通过 Readwise Reader 来进行处理的,原因有二。

  1. 统一了 PDF 和 ePub 的阅读体验
  2. 可以配合 immersive-translate 快速的阅读英文文章和书籍,决定是否需要精读。(不看好 GPT 的总结,以及总结本身就是思考的过程,这一步不应该被 AI 替代。)

但也有一些缺点,导出的自定义并不能满足细分场景,跟官方沟通后无果,就动了迁移的心思。刚好 Emacs 有个插件 emacs-immersive-translate 可以实现类似浏览器中「沉浸式翻译」的效果,因此 RSS 和书籍都重新迁移到 Emacs 当中。emacs-immersive-translate 我使用的是 OpenAI 的 API 进行翻译,感觉更加自然准确一点。

另外巧合发现 Karthink 的另外一个包 elfeed-tube 可以增强 elfeed 中订阅 YouTube 的体验,通过 elfeed-tube-fetch 按照时间顺序拉取字幕,配合 emacs-immersive-translate 就可以快速的浏览视频内容,再决定哪部分需要详细观看。详细观看时,不需要打开浏览器,拉到对应的时间观看。只需要开启 elfeed-tube-mpv-follow-mode 并用 elfeed-tube-mpv 打开视频观看,这些都可以快速的用键盘操作完成,点击对应的字幕就可以跳转到需要详细观看的部分。

接下来,不管是 YouTube 还是博客文章,处理过程都是一致的。「摘录-笔记」的结构写在 daily log 文件中(成体系的系列视频或者文章参考下面书籍的处理办法),比如写作日期的当天就是 2023-08-02.org 这个 org 文件。这个文件当中分为了几个部分。

  • Task 是当天完成的 To-Dos
  • What I read? 阅读文章的笔记
  • log 的主题,包含了工作问题的解决思路,备忘(会加 tag 方便检索),Fleeting Notes 等等,每一条的前面都会有记录的时间点。

每天结束的时候,都会重新回顾一下当天的 daily log 文件,记录阅读的文章以及记录的工作内容时都会根据内容添加 tag,在遇到相同类别的内容需要整理时,才会整理到具体的笔记当中。不管需不需要整理出具体的笔记,当天的 log 文件都会按照当前的结构归档(结构归档就是按照原来文件内的排版结构,具体到在某个标题下的 To-Dos 归档后依旧在对应的标题下)到 journal.org 文件中,即当前年的 log 是归档到 journal.org;过去一年后,比如过去的 2022 年,就有一个 2022.org 文件,未来还会有 2023.org 等。

至此,RSS 讲完,书籍(包含 PDF/ePub)都是用 Ebib 进行管理,Ebib 主要是管理 bibtex 的包,其中可以添加对应书籍的位置,因此也可以用来管理书籍,与很多人常用的 Zotero 在功能上很像。不需要作笔记的书籍就随便很多,不管是在 Kindle 还是微信读书,或 iOS 自带的 iBook 都可以阅读。

Figure 2: elfeed-list

Figure 2: elfeed-list

这里的 bibtex 来源可以是 Zotero 拉取的,也可以是手动下面网站拉取的。

  • Lead2Amazon.com

  • ZoteroBib

  • doi2bib

  • BibSonomy

  • BibTeX Search

  • Google Scholar

  • ACM

  • IEEE Xplore

    ebib 当中可以通过 ebib-add-reading-list-item 添加具体的书目到 books.org 当中,books.org 是一个 org 文件,纳入到 org-agenda 文件下。这里解释一下,GTD 事项管理物理上分为两大部分,inbox.org 和 books.org 等按照事项不同分类的文件(比如还有 work.org)。

    books.org 当中也按照书籍不同的分类,通过 refile 调整到不同的标题下。ebib 当中可以自定义很多东西,比如添加到 books.org 中的书目的待办事项关键字默认是 TODO​,我自定义成 PROJECT 关键字。将书籍的目录手动复制到待办事项下,以 checkbox 的形式存在,这样读完一个章节可以勾去一条,同时在事项的最后会有百分比显示进度。

Figure 3: todo-item

Figure 3: todo-item

这里的读书书目,并不是每个都会添加到 agenda view 当中,只有添加了 reading tag 的书目才会显示,agenda view 也是有相当高的自定义空间的。为了更方便的查看某书目的阅读已经创建了多久,自定义了函数,在 agenda view 中会在前显示已创建的时长,比如下图的 11.7M,M 是 Month 的含义。

Figure 4: agenda-view

Figure 4: agenda-view

回到 ebib 上来,通过 ebib-popup-note 可以创建对应书籍的笔记,这里笔记的创建模板也是做了自定义的,更加符合个人的习惯。笔记内容同样是手动复制的目录,按照「总结-摘抄-笔记」的结构。摘抄-笔记的结构好理解,总结就是读完一本书,会针对内容进行总结,形式是 QUE-Question,CLM-Claim,EVD-Evidence,同时也参考了「卡片笔记法」,对于会被其他笔记引用多次的内容会从中抽离出来,单独成卡。

Figure 5: discourse-graph-example

Figure 5: discourse-graph-example

笔记使用的是 org-roam,更类似于 obsidian 的组织方式;阅读 PDF 的工具是 pdf-tools,ePub 的工具是 nov.el,后者也可以通过 emacs-immersive-translate 进行翻译,阅读英文书籍的速度就提高了很多。其中 nov.el 阅读 ePub 时,尤其是有批注的经典文学作品,我就很喜欢在 Calibre 内用正则替换一下原有的批注 HTML 标签,改为『』包裹,在 nov-mode 下根据 font-lock 设置不同于正文的样式,就很好区分正文和批注了,不会看上去都是黑色的字体。

Figure 6: nov-font-lock

Figure 6: nov-font-lock

笔记的漫游,是交给了 org-roam-ui,当初入坑 Emacs 就是因为这个包,逐渐建立起来了现在的一整套流程,可以算作从尾巴推全局了。

Figure 7: org-roam-ui

Figure 7: org-roam-ui

「杂七杂八的输入源」以及手机端和稍后读目前都是通过 Telegram 的 Saved messages,不管是文章、视频还是书籍,处理的逻辑都与上面相同。

下面来着重讲一下上面提到的 GTD 部分。通过快捷键,Emacs 无论处于哪个工作流程,都可以快速的记录 To-Dos 到 inbox.org 中,然后整理到各自分类的 org 文件当中,这些文件都在 org-agenda 管辖当中。

不管是 books.org 还是各种 To-Dos 分类的 org 文件,在完成后(关键字变成 DONE)都会自动复制到当天的 daily log 中的 Task 标题下,方便一天结束的时候进行回顾。这些完成的 To-Dos 放在文件中其实也会搅扰到视觉,因此我会手动归档到同目录的子文件夹下的同名 org 文件中,同样的是按照结构归档。

对于跨度小,一天内能完成的 To-Dos 通常会进行计时,这里也做了自定义。需要开始做一个 To-Do 时,通过 org-clock-in 开始计时,同时关键字由 TODO 自动切换成 NEXT​,完成时切换关键字 NEXTDONE 时自动结束计时。如果不需要计时,正常的关键字切换流程也不影响。

额外的一些在办公室能够完成的习惯跟踪,我也写在 agenda 当中,绿色代表完成,黄色和红色是未完成。黄色是指距离上次完成还不远,只是警告的含义。

其实在 Emacs 传教作笔记以及 GTD 的时候,很多人最多提出的质疑就是和手机端的联动。笔记方面我使用的是 Plain Org for iOS,可以方便的查看 Dropbox 同步的内容。To-Dos 的同步则是用的 beorg,从 Mac 端同步到 iOS 后,继而同步到 Calendar 中,Fantastical 当中就可以展示,同时 iCloud 的同步下 Mac 端的 Fantastical 也可以同步展示。

从 iOS 端到 Mac 端,也可以通过 beorg 来添加内容到 inbox.org,同步到 Mac 后再 refile 分配到其他分类的 org 文件。(iOS 端其实也可以很方便的直接把 To-Dos 创建到对应分类 org 的某个标题下。)如此这样就形成了闭环。


No notes link to this note