吴锴的博客

Life? Don't talk to me about life!

0%

我是如何管理笔记文件的

那些年使用过的笔记软件

这些年我换过许多笔记软件,最开始使用的是 Evernote/印象笔记,因为可以实现电脑端和手机端的同步,加上方便的浏览器的剪藏扩展,成了我大学时期的主力应用。

后来我买了一台微软的 Surface3 平板,附赠一年的 Office365,其中就包含了 OneNote 应用。OneNote 笔记本的设置深得我心,搭配手写笔的体验很好,它的搜索功甚至能直接搜到图片上的文字。

虽然 OneNote 有着强大的格式功能,但是不原生支持 markdown 格式,笔记中的代码格式一直是个问题。之后我切换到了 Mac 平台,接触到了 Bear(熊掌记),第一次使用的感觉很惊艳,支持 markdown,内置了多款主题可供选择。为了获得设备间的同步功能,我选择了付费。Bear 也成了我这几年最常用的笔记应用。

Bear 最大的优点就是它的颜值高,能在文件任意位置添加标签也很方便。但是它也有一些缺点:只能在苹果平台使用;没有目录功能;不支持表格。

这几年间,Bear 几乎没有什么功能上的更新,多年前开发者就声称在开发的 Web 编辑器也遥遥无期。

在这期间,我又试用过了 Notion,功能的确强大,但当时使用的版本有几个缺陷: 当时对免费用户能使用的 Block 数量有所限制;搜索功能有欠缺;用着卡顿;需要翻墙。因为 Notion 的强大功能,甚至会有专门针对 Notion 的教程,让我开始思考我真的需要这么多功能吗。

我还面临一个问题,既然可以随手添加新笔记,当有了几百条没有整理过的笔记之后,查看起来也不方便,我的解决方案是换一个新的笔记应用,最后笔记分散在了多个不互通的应用中。

市场上有足够多的笔记应用了,包括收费的以及各种开源的。假如我需要功能1、功能2,但是可能应用A具有了功能1,而只有应用B有功能2,难道需要把两个应用都安装上。

我放弃了寻找一个完美的笔记应用,决定自己写一个笔记文件的管理应用,暂时将编辑功能放在一边,先专注于文件的管理。

开发自己的管理工具

我的笔记大部分是计算机相关的,有着大量的代码片段,markdown 格式是必选的。我很喜欢 Bear 中添加标签的方式,只要标签是以 # 开头即可,而市面上大部分给 markdown 文件加标签的方式是使用 yml 配置。

我理了下我的需求:

  1. 支持 markdown,尽量是标准的 markdown
  2. 支持文件夹管理
  3. 支持标签管理(#tag的格式)
  4. 文件保存在本地,与应用分离
  5. 可以用 git 来做版本的控制
  6. 主题可自定义
  7. 可多端同步

开发中我选择使用一个本地开启的 Node.js 服务器来处理文件,在浏览器中进行 UI 的展示,两者间通过接口通信。经过了一段时间的开发后,完成了我的笔记管理应用 knowledge-center

knowledge-center-文件夹展示

knowledge-center-标签展示

knowledge-center-标签云展示

在完成了基础功能之后,我就在平时开始了使用。这个应用专注于文件的管理,需要编辑功能时则由应用提供的快捷功能切换到 VSCode 或者 Typora 中完成。作为唯一用户的我也觉得不方便,考虑到这一点,基础的编辑功能不可少。

如果需要融合编辑器的功能,整个应用可能需要利用 electron 技术来进行重构。在开始这么做之前,我问了自己一个问题:我开发的这个应用的编辑体验能超过 Typora 吗?我估计了一下自己能投入的时间精力,得出的结论是不可能。

于是我换了一种思路,我对于 markdown 文件的编辑工作是用 VSCode 和 Typora 完成的,既然如此,何不写一个 VSCode 的扩展来完成呢。

将管理工具移植为 VSCode 扩展

借用 VSCode 扩展的方式,我将不需要考虑文件的编辑、本地图片展示、文件中相对路径等等问题。在学习了 VSCode 的扩展开发之后,我将 knowledge-center 工具改造成了扩展版 KaiNotes。它提供了按标签将文件分类的功能。从下面可以获取使用地址和代码地址,或者直接在 VSCode 中搜索 kainotes 安装使用。

kainotes

kainotes-tag-cloud

扩展现在已经完成了基础功能的开发,自我感觉使用体验不错。

我的笔记管理流程

现在我的笔记流程是这样的:

  1. 创建一个 git 仓库用于存放笔记文件
    • Git 自带了文件的编辑历史
    • 只要将仓库同步至远端就相当于做了备份
  2. 编辑文件时使用 VSCode 或 Typora
    • 简单的编辑在 VSCode 中在完成,突出一个方便快捷,预览功能可搭配 Markdown Preview Enhanced 扩展
    • 较复杂的编辑会选择 Typora,所见即所得搭配可选择的主题会有很好的编辑体验
  3. 笔记文件的管理会在 VSCode 中使用我的 kainotes 扩展来完成
    • 按标签查看相关的笔记
    • 利用标签词云来直观查看笔记数量
  4. 需要记录零散内容则使用备忘录或Bear
    • 备忘录足够方便,多种设备均可输入,iPad 还可使用手写
    • Bear 同步功能和 markdown 输入不错,既然给 Bear 续了费,那就继续使用下去,
    • 零散的内容根据需要整理到笔记仓库中

KaiNotes 还有不少功能等着开发,比如重命名标签、收藏文件等功能,还会继续完善。

最近在更新了 Mac 系统后,发现苹果的备忘录应用也支持添加 #tag 格式的标签了。如果备忘录能支持 markdown,它就几乎能满足我的所有需求了。

现在还有双链笔记的概念,roamlogseq 等应用我还没有尝试过。以后可能会取其所长整合到我的工具中去,或者更新我的笔记管理方式。

笔记工具太多了,在使用它们的过程中我一直在提醒自己不要本末倒置,工具是次要的,内容才重要。记下来的笔记也是需要复习整理的,才能从单纯的笔记转变为知识。

欢迎关注我的其它发布渠道