编辑器是你在 Caliu 里度过时间最多的地方,所以它得到了最多的用心。每个应用都有自己的编辑器,构建在其平台自己的文本技术之上,而它们都遵守同一个承诺:存储的是纯 Markdown,你看到的就是这份 Markdown,在你输入时就地呈现格式。
一个循环,三个编辑器
每个 Caliu 编辑器都做同样的三件事:
- 读取笔记的 Markdown,并理清它的结构:标题、列表、任务、引用、代码、表格。
- 显示这一结构为带格式的文本,在你需要之前把语法隐藏起来。
- 写回你的编辑,存为 Markdown,也就是任何其他 Markdown 应用都能读取的那种纯文本。
打开一条笔记永远不会改变它。笔记只在你编辑时才会改变,因此在另一台设备上阅读笔记,绝不会在背后把它改写。
在网页上:ProseMirror
网页编辑器构建在 Tiptap 之上,而 Tiptap 又建立在 ProseMirror 之上。ProseMirror 是一个在浏览器中进行富文本编辑的工具包,许多知名写作工具都在使用它。代码块由 Shiki 着色,许多代码编辑器用的也是这款高亮工具。
在 iPhone、iPad 和 Mac 上:Apple 自己的文本系统
Apple 编辑器直接构建在 Apple 的原生文本视图(iPhone 和 iPad 上是 UITextView,Mac 上是 NSTextView)和 TextKit 之上,后者是 Apple 自家应用背后的文本引擎。Markdown 由 Apple 的 swift-markdown 库读取,它遵循与 GitHub 相同的规范;写回时会完整保留你原来的写法:如果你写的是 *italic* 而不是 _italic_,它就会一直保持原样。
整条笔记是一个连续的文本视图。正是这一点,让选择、滚动以及跨段落编辑感觉自然。那些不是纯文本的内容,比如表格和代码块,会绘制成独立的视图,叠放在文本之上。
在 Android 上:平台自己的文本框
Android 编辑器构建在 Android 自己的文本框之上,在你输入时套用样式。Markdown 由 commonmark-java 读取,并对照与 Apple 应用相同的参考进行检验。数百份示例文档必须原封不动地从 Android 编辑器里出来,与它们在 Apple 设备上的表现一样。
为什么原生文本很重要
文本编辑是一个应用最难做好的事情之一。Caliu 构建在每个平台自己的文本引擎之上,而不是重新发明一个,因此能获得你的设备早已掌握的一切:自动更正和拼写检查、听写、日语、中文和韩语输入法、VoiceOver 和 TalkBack 等屏幕阅读器,以及你习惯的选取手柄和快捷键。
查看 Markdown
任何时候你想看看真正存储的是什么,切换到源码模式即可。它会显示原始的 Markdown,每个 # 和 * 都在其中,你也可以直接在那里编辑。请看《源码模式》一文。