再做一款 Markdown 编辑器的理由
Markdown 编辑器已经很多了,为什么还要再做一个?不是因为功能不够,而是因为从来没有一款产品能同时兼顾打开后占用的资源、保存留下的痕迹,以及指尖的感受。

每次选择 Markdown 编辑器时,都不得不放弃一样东西。
行内编辑方便的应用会在保存时改动文件。能够原样保留文件的应用,编辑体验又不尽如人意。笔记功能丰富的应用,就连只打开一篇文档也显得很笨重。
到头来,我总是同时开着两个编辑器。
所以我开始开发 mote。它是一款同时守住这三点的编辑器。
- 隐藏 Markdown 符号,直接进行编辑
- 将我写下的文件原样保存
- 不使用网页引擎,轻量运行
能够分别做到其中一点的产品已经很多了。但我没有找到能同时满足这三点的产品。
轻量与否,用数字来说
支持行内编辑的 Markdown 编辑器大多使用 WebKitGTK 或 Chromium 之类的网页引擎。也就是把 Markdown 转换成 HTML,再由浏览器渲染出来。
实现起来更容易,但也会产生代价。就像文档旁边还同时运行着一个浏览器。进程和内存占用会增加,键盘输入也要经过更多环节。
然而,很少有产品会公开这些成本。产品页面上不会展示空闲 CPU 占用或键盘输入延迟,只会留下“轻量”这个词。
mote 的做法不一样。
我们在同一台电脑上以相同的方式测量空闲 CPU 占用、内存、键盘输入延迟和启动时间。测量脚本和原始数据也都放在代码仓库里。超过既定性能预算的构建版本不会发布。
进行比较时,也只使用在同一时间测得的数据。无法测量的数据不会记作 0,而是明确标注为未能测量。
因为轻量不应该是一种感觉,而应该是一项测量结果。
保存时不会擅自修改文件
用 git 管理文档时,偶尔会遇到奇怪的 diff。
明明只修改了表格里的一个单元格,下一次提交中却出现了一大堆没有改过的行。这是因为编辑器在保存时重新调整了表格的空格或对齐方式。于是,我修改的一行和编辑器修改的二十行混在了一起。
并不是所有内容都会被改动。有些编辑器也能很好地保留换行或连续空格。差异主要出现在表格和对齐方式上。原样保存文件也并非 mote 独有的功能。
即便如此,我仍然认为这是一个必须守住的条件。
在 mote 中,文本才是基准。文件的字节会原样载入缓冲区,加粗文字、表格和公式则绘制在其上。保存时,缓冲区会被原样写入磁盘。
屏幕上的显示可以变得更美观,但文件不会在背后被偷偷改动。

先把韩文输入做好
网页编辑器那些微妙的不便,指尖能够感觉得到。滚动、模糊效果和动画看起来或许相似,却总与操作系统的原生应用有些细微差别。
输入韩文时,这种差异会更加明显。
有时会出现正在组合的字符分裂、光标跳动,或在行尾漏掉输入内容的问题。这些问题出现在网页编辑器处理韩文组合事件的过程中。
mote 让操作系统直接绘制字符和效果。韩文组合输入也直接从平台输入法接收。相应地,我们必须为每种操作系统分别实现输入方式,并在真实设备上进行确认。目前支持 Linux,macOS 和 Windows 版本仍在开发中。
这条路更难走,但对于书写长文的人来说,这种差异很重要。

#,上方的粗体、斜体和行内代码都以不显示符号的方式呈现。需要 mote 的人也许并不多。
用 git 管理 README 和设计文档的开发者。用韩语书写长文的人。整天在笔记本电脑上开着编辑器的人。
但他们离开一款编辑器的理由很明确。
杂乱的 diff。断断续续的韩文输入。一直转个不停的风扇。
我们也决定了哪些事不做
mote 没有同步、插件、反向链接、AI 和协作功能。
我们不会开发自己的同步功能。不会设置账户,也不会架设服务器。甚至不会在文档文件夹中创建单独的配置文件。凡是需要 Markdown 无法表达的状态才能实现的功能,我们都没有加入。
因此,文件夹中只会留下 .md 文件。iCloud、Syncthing 和 git 即使不知道 mote 的存在,也能照常运行。
我们也不会开放插件 API。因为哪怕插件只运行一个计时器,也可能破坏我们的性能承诺。不过,主题、代码片段和导出模板会保持开放。它们可以在不影响编辑性能的前提下改变最终输出的样式。
我们也不会开发反向链接和图谱视图。因为这款产品并不打算与笔记数据库竞争。我们只支持文件夹树和标准相对链接。
我们也不会加入 AI。它不会总结或续写,也不会读取文档文件夹并将内容发送到外部。编辑器不会把我的文档发送到任何地方,我认为这本身也是一项重要功能。
我们也不支持实时协作。要实现多人共同编辑,就必须以服务器上的文档模型为基准。这样一来,就会与原样保留磁盘文件的原则发生冲突。
在两者之间,mote 选择了文件。
如果你需要 Obsidian 的生态系统,那么 Obsidian 更适合你。如果你重视 Typora 多年来的稳定性,那么 Typora 才是合适的选择。iA Writer 的排版也仍然是我们需要追赶的目标。
mote 并不打算取代所有 Markdown 编辑器。
也不是因为这个世界还需要另一个 Markdown 编辑器。
只是需要一款同时尊重文件和笔记本电脑的编辑器。