Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Markdown 工具太多了,我决定做一次「最小保留」

在日常工作和生活中,我使用 Markdown 的频率越来越高,现在几乎已经到了离不开的程度。

但与此同时,我也发现自己使用的软件越来越多:这个软件有一个喜欢的功能,那个软件又有一个舍不得放弃的功能。到最后,功能越来越冗余,工作流越来越复杂,注意力反而被不同的软件不断分散。

软件本来应该帮助我们提高效率。如果为了寻找、配置和切换工具,反而投入了越来越多的时间,那多少有些本末倒置了。

所以最近我决定按照一个原则,重新梳理自己的 Markdown 工具:

最小保留。

能用一个软件解决的,就不用两个;没有明确使用场景的软件,即使功能再强大,也没有必要为了“可能以后会用”而强行塞进自己的工作流。

这篇文章就来梳理一下我目前使用过的几套 Markdown 工具,以及折腾一圈之后,它们最终在我的工作流中分别处在什么位置。

主要涉及:

如果先说结论,目前我的选择其实很简单:

长文写作 → Typora

科研阅读笔记 → Zotero + Typora

代码、项目文档以及其他 Markdown 操作 → VS Code

Obsidian → 暂时退出日常工作流

Obsidian & Obsidian Addons

前不久,我在使用 Typora 本地管理和同步 Zotero 笔记时遇到了一个问题:因为笔记抬头中的“版本编号冲突”,无法在不同设备上基于同一个 Markdown 文件正常同步 Zotero 笔记。

为了解决这个问题,我专门安装了 Obsidian。

当时的思路是:使用 Obsidian 管理本地 Zotero 笔记,再借助 Zotero 插件 MarkDB-Connect,实现在本地查看、修改和同步 Zotero 条目中的笔记。

这套方案确实解决了之前遇到的版本冲突问题。

但后来,我开始使用 Zotero 插件 Better Notes for Zotero 的笔记同步功能,发现它同样可以很好地解决这个问题,而且更符合我原来的使用习惯。

于是,刚刚配置好的 Obsidian 就被我晾在了一边。

直到现在,我也基本没有再真正使用过它。

不过,当初安装 Obsidian 的时候,我还是花了一番心思,按照自己的需求给它配置了一套有必要、但尽可能精简的插件组合。

Installed plucins

虽然 Obsidian 最终没有进入我目前的主力工作流,但我依然觉得这些插件的组合不错,所以还是记录下来,也给正在使用 Obsidian 的小伙伴做个参考。

这次折腾也让我越来越确定一件事:

一个软件很好,不代表我就一定需要它。

Obsidian 很强大,但如果现有工具已经能够很好地解决我的需求,那么再增加一个功能高度重叠的软件,对我来说带来的可能不是效率,而是额外的管理成本。

所以目前,我选择暂时把它移出自己的日常工作流。

Typora, Zotero & Zotero Plugins

如果说 Obsidian 是我折腾之后暂时放弃的工具,那么 Typora 则恰恰相反——它是我折腾了一圈之后,依然非常确定会留下来的软件。

对我来说,Typora 是最适合写 Markdown 长文的工具之一。

它的“所见即所得”加上极其简洁的界面,可以让人在写东西的时候几乎感觉不到 Markdown 语法本身的存在。

没有左右分栏,没有大量按钮,也没有太多东西提醒我“你正在使用一个软件”。

打开文件,然后开始写。

我很喜欢这种感觉。

对于经常需要写东西的人来说,能够在 Typora 里安安静静地进入心流,是一件非常幸福的事情。

目前,我使用 Typora 主要有两个目的:

  1. 本地查看、修改和管理 Zotero 笔记;

  2. 写公众号文章草稿以及其他 Markdown 长文。

为什么要把 Zotero 笔记放到本地?

可能因为 Zotero 本身就比较吃内存,当笔记篇幅稍微长一点以后,直接在 Zotero 中打开、浏览和修改笔记,有时会变得不太流畅,甚至出现卡顿。

而相比之下,Typora 在处理长篇 Markdown 文本时要舒服得多。

所以我现在的思路是:

Zotero 负责管理文献和保存最终笔记,Typora 负责真正的阅读和编辑体验。

也就是说,我把 Zotero 笔记导出为本地 Markdown 文件,在 Typora 中查看和修改,再将修改后的内容同步回 Zotero。

整个工作流可以简单概括为:

Zotero → Markdown → Typora 编辑 → 双向同步 → Zotero

为了实现这套工作流,我目前在 Zotero 中安装了两个插件:

这两个插件在我的工作流中承担的任务并不完全相同。

MarkDB-Connect 主要负责建立本地 Markdown 文件与 Zotero 条目之间的联系;Typora 负责本地 Markdown 文件的查看和编辑;真正的笔记双向同步,则交给 Better Notes for Zotero

我会刻意避免让 MarkDB-Connect 同时参与笔记同步,以免两个插件同时操作同一批 Markdown 文件而产生冲突。

下面是我的具体设置。

1. Better Notes for Zotero

首先进入:

Zotero → Settings → Better Notes → Sync

我的设置为:

image-20260809003016521

设置完成之后,进入:

Zotero → Tools → Sync Manager → Detect

选择本地用于管理 Zotero 笔记的路径,例如:

~/ReadingNotes

然后依次:

Refresh → Sync

其中,Refresh 用于更新本地文件夹中当前已有的笔记文件,Sync 则负责双向同步本地 Markdown 笔记和 Zotero 数据库中的对应笔记。

实际使用下来,这个同步过程几乎是毫秒级的,基本没有体感。

也是因为这一点,我后来彻底把笔记同步交给了 Better Notes for Zotero。至少在我的使用场景下,它比 MarkDB-Connect 自带的笔记同步功能好用太多。

2. MarkDB-Connect

接下来设置 MarkDB-Connect

Location of Markdown Reading Notes

Folder Containing Markdown Reading Notes

这里我会故意设置为一个根目录和所有子目录中都不包含 Markdown(.md)文件的路径,例如:

~/Desktop

这么设置看起来似乎有点奇怪,但其实是故意的。

目的就是让 MarkDB-Connect 的同步功能找不到任何 Markdown 笔记,从而避免它和 Better Notes for Zotero 同时同步同一批文件而产生冲突。

image-20260820001303653

Custom File Filter → RegExp (case insensitive)

设置为:

/^NOTES-(\w+)\.md$/i

也就是说,我的笔记文件名统一以 NOTES- 为前缀。

image-20260819234527118

Match Markdown Files to Zotero Items Using

选择:

Zotero-Item-Key - captured with custom RegExp

RegExp 设置为:

/^\$itemKey:\s*(\w+)/m

image-20260819234658291

Open Markdown Files using

选择:

System’s Default Editor

image-20260819234854664

Advanced Settings

我的设置为:

image-20260819235354790

3. 导出 Zotero 笔记

最后是笔记导出。

在 Zotero 中选中条目内的笔记,右键选择:

Export Note…

然后设置:

最后点击 OK

image-20260819235922491

至此,我现在使用的 Zotero + Typora 本地笔记工作流就基本搭建完成了。

这套方案最让我满意的一点,是三个工具的职责非常明确:

Zotero 管文献,Typora 管阅读和编辑体验,Better Notes 管同步。

各做各最擅长的事情。

VS Code & VS Code Extensions

Typora 适合让我专心“写东西”,但一旦进入代码、项目文件和更复杂的 Markdown 使用场景,我还是会回到 VS Code。

以下是我目前日常使用 VS Code 时,所有涉及 Markdown 的相关插件:

image-20260820000810144

这些插件各自承担不同的功能,基本涵盖了我在 VS Code 中与 Markdown 文件互动的大部分场景。

具体每个插件的特色功能这里就不一一展开了。

不过,有一个插件我特别想单独说一下。

因为它是一个——

我安装之后觉得惊艳,然后又迅速卸载掉的插件:Office Viewer

刚安装的时候,我甚至一度觉得它可以替代 Typora。

因为它直接在 VS Code 中实现了类似 Typora 的“所见即所得”体验。如果能够在 VS Code 里同时获得代码编辑能力和 Typora 式的 Markdown 编辑体验,理论上我甚至可以再减少一个软件。

听起来非常符合我的“最小保留”原则。

可惜实际使用没多久,我就放弃了。

原因是它占用了太多我日常使用的快捷键,包括复制、粘贴,甚至回车,严重影响了我正常使用 VS Code。

当然,这些快捷键冲突完全可以自己重新配置。

但我懒得配。

所以最后还是把它卸载了。

image-20260820002320766

于是,我又回到了现在的方案:继续使用 VS Code + 上述 Markdown 插件完成各种复杂操作,而把真正需要专心写长文的场景交给 Typora。

这反而让我觉得更舒服。

最后:我到底留下了什么?

折腾了一圈 Obsidian、Typora、Zotero 和 VS Code 之后,我目前真正留下来的 Markdown 工作流其实比以前简单了很多:

以前我很容易因为一个软件有某个独特的功能,就觉得“这个也应该留着”。

但现在越来越觉得:

软件的价值不在于“它能做什么”,而在于“我是否真的会用它做什么”。

一个功能再强大的软件,如果没有进入自己的真实工作流,它最终也只是多一个需要安装、更新、配置和管理的东西。

工具越多,并不意味着效率越高。

真正理想的工具组合,也未必是功能最全的那一套。

对我来说,现在更喜欢的是:

在能够满足需求的前提下,让工具尽可能少,让每一个留下来的工具都有一个明确的位置。

这就是我现在理解的——

“最小保留”。

总结

Summary