AI技术投降派
在Typora收费与Obsidian膨胀的红海市场中,小团队工具唯有靠GBK编码保护、原子落盘等国际软件忽视的工程细节才能建立起护城河。
AI-assisted summary of 红海里的Markdown编辑器:4个月21版细节狂魔 — original source. Check the original for full context.
Source published:
Key ideas
- 新型本地优先 Markdown 编辑器 Nomo 凭借三人小团队在 4 个月内迭代 21 版入局红海市场,主打底层细节工程与老旧中文格式兼容。 (0:00)
- Nomo 支持 UTF-8、UTF-16 及老旧 GBK 编码的原样存盘,并在输入无法编码字符时强制拒绝保存,确保历史笔记不被篡改损坏。 (1:06)
- 针对大体积 TXT 与 JSON 文件,软件引入分块读取、异步行索引和全文虚拟滚动引擎,支持流式后台查找替换与随时取消操作。 (2:24)
- 由于项目仍处 0.5 阶段且暂未购买商业代码签名证书,官方在 README 中主动披露格式检查、UNC 路径等局限并提供 MD5 校验清单以建立信任。 (3:40)
Detailed notes
## Background 该视频由 Bilibili UP 主“AI技术投降派”于 2026 年 10 月 22 日发布。视频聚焦于在 Typora 收费、MarkText 停更、Obsidian 越发庞大的红海市场背景下,由三人团队耗时 4 个月高频迭代 21 版的本地优先 Markdown 编辑器 Nomo,重点解析其如何凭借照顾十年前 GBK 编码老文档等极致细节切入市场。
## TL;DR Nomo 基于 Tauri 2 与 Svelte 5 构建,核心特色在于让所见即所得语义模式与源码模式共享同一数据源,消除了双栏预览的割裂感。它深入打磨了多项常被大厂产品忽略的边缘工程细节:无损保留并校验 GBK 等四种老编码、采用临时文件原子替换实现安全落盘、依据 30% 视口锚点实现丝滑双栏跟随,以及专为大文件打造的分段编辑引擎。此外,开发团队在文档中开诚布公地交代功能边界与无签名的安全风险,展现出专注于纯粹文本编辑工具的克制态度与务实作风。
## Atmosphere & style 全片节奏紧凑、叙事沉稳,透露着资深技术人对精妙工程细节的由衷赞赏与敬意。解说风格极其务实且克制,没有盲目的商业吹捧,而是从中文用户的真实痛点层层抽丝剥茧,直击大厂工具的盲区。整场剖析兼具对小团队“细节狂魔”特质的热切共鸣与对早期项目安全风险的冷峻审视,给观众带来一种通透、可信且尊重技术的严谨氛围。
## Bulletin - [00:00](https://www.bilibili.com/video/BV1d7pK6eEw5?t=0s) 新型本地优先 Markdown 编辑器 Nomo 凭借三人小团队在 4 个月内迭代 21 版入局红海市场,主打底层细节工程与老旧中文格式兼容。 - [01:06](https://www.bilibili.com/video/BV1d7pK6eEw5?t=66s) Nomo 支持 UTF-8、UTF-16 及老旧 GBK 编码的原样存盘,并在输入无法编码字符时强制拒绝保存,确保历史笔记不被篡改损坏。 - [02:24](https://www.bilibili.com/video/BV1d7pK6eEw5?t=144s) 针对大体积 TXT 与 JSON 文件,软件引入分块读取、异步行索引和全文虚拟滚动引擎,支持流式后台查找替换与随时取消操作。 - [03:40](https://www.bilibili.com/video/BV1d7pK6eEw5?t=220s) 由于项目仍处 0.5 阶段且暂未购买商业代码签名证书,官方在 README 中主动披露格式检查、UNC 路径等局限并提供 MD5 校验清单以建立信任。
## Key takeaways - [00:00](https://www.bilibili.com/video/BV1d7pK6eEw5?t=0s) 在 Typora 收费、MarkText 停更及 Obsidian 趋向笨重的背景下,新入局的轻量编辑器必须依靠深度工程细节形成差异化。 - [00:00](https://www.bilibili.com/video/BV1d7pK6eEw5?t=0s) 软件采用 Tauri 2、Svelte 5 与 CodeMirror 6 技术栈,提供跨 macOS 和 Windows 的本地优先桌面编辑体验。 - [00:28](https://www.bilibili.com/video/BV1d7pK6eEw5?t=28s) 通过 ProseMirror 统一底层数据源,语义编辑排版与源码模式共享同一状态,解决了传统双栏预览的视图割裂问题。 - [01:06](https://www.bilibili.com/video/BV1d7pK6eEw5?t=66s) 完整支持并保留 UTF-8、UTF-8 BOM、UTF-16 LE/BE 与 GBK 四种编码,精准击中中文用户保存十年前老笔记常遇乱码的痛点。 - [01:06](https://www.bilibili.com/video/BV1d7pK6eEw5?t=66s) 奉行“宁可不存不肯存坏”原则,当在 GBK 文档中输入超集字符时直接阻断保存,保障原文档完整性。 - [01:47](https://www.bilibili.com/video/BV1d7pK6eEw5?t=107s) 落盘采用临时文件写入校验后再行原子替换的机制,杜绝中途断电或死机生成残缺半文件的风险。 - [01:47](https://www.bilibili.com/video/BV1d7pK6eEw5?t=107s) 双栏跟随逻辑摒弃粗暴的百分比等高绑定,改用视口 30% 位置作为连续动态锚点换算,以手动滚动栏优先。 - [02:24](https://www.bilibili.com/video/BV1d7pK6eEw5?t=144s) 为数百兆的 TXT 和 JSON 日志文件设计分段编辑引擎,免去全量内存加载并提供可取消的流式后台查找与替换。 - [02:54](https://www.bilibili.com/video/BV1d7pK6eEw5?t=174s) 功能面覆盖丰富但不失克制,囊括 Shiki 高亮、KaTeX 公式、6 种 Mermaid 模板、大纲整节拖拽及 PicGo 图床上传。 - [02:54](https://www.bilibili.com/video/BV1d7pK6eEw5?t=174s) 深度整合系统级原生体验,具备视口级别的标签页状态恢复、可置顶小窗以及 macOS 原生 Quick Look 预览。 - [03:40](https://www.bilibili.com/video/BV1d7pK6eEw5?t=220s) README 专设“功能边界”明确交代不跨文件查找替换、超长文档自动降级只读及不支持 UNC 路径等限制,坚持透明诚实。 - [03:40](https://www.bilibili.com/video/BV1d7pK6eEw5?t=220s) 针对缺乏代码签名触发的 SmartScreen 与 Gatekeeper 拦截,官方直接公布原因并附带 MD5 校验清单来换取用户信任。 - [04:22](https://www.bilibili.com/video/BV1d7pK6eEw5?t=262s) 产品清晰定位于重度 Markdown 写作者与老旧大文件处理场景,不盲目追求 Obsidian 式的双链笔记和插件生态。 - [04:22](https://www.bilibili.com/video/BV1d7pK6eEw5?t=262s) 当前核心开发主力单一且版本号仅为 0.5,处理关键资产时仍需开启快照机制防范早期软件风险。
## Detailed walkthrough ### [00:00](https://www.bilibili.com/video/BV1d7pK6eEw5?t=0s) 红海突围与核心体验:双模式共享同一份文档
Markdown 编辑器市场早已是一片红海:Typora 走向了收费,MarkText 停止了更新,而 Obsidian 则变得越来越庞大臃肿。在这样的格局下,2024 年 5 月 GitHub 上出现了一位新选手——Nomo。这是一个仅由三人组成的小团队,在短短 4 个月内狂发了 21 个版本,获得了 186 颗 Star。面对它凭什么入场的疑问,答案就藏在令人惊叹的细节里:“这个编辑器连你10年前的GBK编码老文档都照顾到了”。
Nomo 的定位是本地优先(Local-first)、Markdown 优先的桌面编辑器,支持 macOS 和 Windows 双平台,底层技术栈基于 Tauri 2 搭配 Svelte 5 与 CodeMirror 6,界面保持了原生应用该有的克制与清爽。
它的核心体验可以用一句话概括:语义编辑与源码模式共享同一份文档。在所见即所得的语义编辑视图中,标题即是标题的排版样式,加粗即是加粗的效果;当一键切换到源码模式时,展现的又是同一篇文档的原生 Markdown 代码。与传统双栏预览编辑器将左右视图割裂的处理方式完全不同,Nomo 依托 ProseMirror 即时解析,让两种视图底层使用同一数据源,消除了状态脱节的问题。
```mermaid flowchart LR accTitle: Nomo 核心编辑架构 accDescr: 单一文档数据源在语义模式与源码模式之间无缝共享切换
subgraph DataEngine ["底层引擎 (Tauri 2 + Svelte 5)"] DOC["统一 Markdown 数据源<br/>(ProseMirror / CodeMirror 6)"] end
subgraph Views ["双视图表现"] direction TB WYSIWYG["语义编辑模式<br/>(所见即所得:标题/排版实显)"] SOURCE["源码模式<br/>(直接查看与编辑 Markdown 原文)"] end
DOC <-->|"状态同步"| WYSIWYG DOC <-->|"状态同步"| SOURCE ```
---
[01:06](https://www.bilibili.com/video/BV1d7pK6eEw5?t=66s) 细节狂魔:GBK老文档支持、安全写盘与锚点跟随
真正让 Nomo 脱颖而出的,是它在底层工程上对边缘场景的执着打磨。
首先是编码处理。打开 Markdown 文档时,Nomo 能精准识别并保留包括 UTF-8、UTF-8 BOM、UTF-16 LE/BE 以及 GBK 在内的四种编码,保存时依然忠实写回原编码。这是击中无数中文用户的切实痛点——十年前沉淀下来的老笔记大量使用 GBK 格式,现代编辑器一旦直接打开就会变成一堆乱码,若不小心按了保存更会造成灾难性的永久损坏。Nomo 在这里还留了一道绝对安全的防线:如果用户在 GBK 文档中输入了该编码集无法表示的新字符,软件会直接阻止保存并弹报错,确保原文件分毫不被篡改,贯彻了“宁可不存不肯存坏”的设计哲学。
其次是安全写盘机制。Nomo 在落盘时采用临时文件原子替换的方式:先在磁盘上写入完整的临时文件,校验写完之后才去替换原文件。即使用户在保存中途遭遇意外断电或死机,最多也只会丢掉刚输入的未存修改,绝不会在硬盘上遗留半份残缺损坏的文件。
再者是双栏跟随算法。许多双栏编辑器采用简单粗暴的强制等高百分比同步,导致滚动体验极其生硬。Nomo 摒弃了这种做法,改为以视口 30% 位置处的内容作为动态锚点进行连续换算。在交互逻辑上,用户手动滚动的一栏享有绝对优先权;而在编辑打字时,只有当光标对应内容快要滚出另一栏的可见视野时,系统才会触发轻量的辅助定位。团队甚至为此专门编写了技术文档,把这套跟随逻辑的实现边界与约束条件交代得清清楚楚。
---
[02:24](https://www.bilibili.com/video/BV1d7pK6eEw5?t=144s) 细节四与功能面:大文件分段引擎与克制的全家桶
面对大体积文件,TXT 和 JSON 文件在 Nomo 中会走独立的分段编辑引擎。该引擎依托分块读取、全文虚拟滚动以及异步行索引技术,无需将整个动辄数百兆的文件全量塞进内存。全文查找与替换完全作为后台流式任务执行,不仅提供进度展示与实时命中计数,还支持随时手动取消。这一能力解决了非常高频的实际工程场景:当开发者需要打开一个几百兆的生产日志或庞大的 JSON 数据集时,大部分编辑器都会陷入假死崩溃,而 Nomo 依然能流畅地滚动与修改。
```mermaid flowchart TD accTitle: 大文件分段编辑引擎流程 accDescr: 分块读取结合虚拟滚动与流式任务处理大文件
subgraph Load ["分段加载机制"] FILE["数百兆 TXT / JSON 文件"] --> CHUNK["分块读取 (不全量占内存)"] CHUNK --> IDX["异步建立行索引"] IDX --> VIRT["全文虚拟滚动渲染"] end
subgraph Search ["后台任务处理"] TASK["全文查找 / 替换"] --> STREAM["流式后台执行"] STREAM --> STAT["进度条 + 命中计数 + 随时取消"] end ```
在日常功能面上,Nomo 提供了“全家桶”级别的丰富配置,同时保持了严密的边界感: - **Markdown 语法支持**:集成 Shiki 语法高亮、KaTeX 数学公式渲染、6 种 Mermaid 图表模板及其实时预览,内置 5 类 Callout 提示框,原生支持脚注与 Front Matter。 - **结构化排版**:文档大纲支持鼠标拖拽,实现章节整节移动,并附带层级结构调整与完整的撤销历史(Undo)。 - **资源与导出**:图片管理提供三种本地目录存储策略,并集成了 PicGo 图床上传;导出 HTML 支持将图片内嵌为单文件;导出 PDF 会自动根据 Markdown 标题级别构建层级书签。 - **原生桌面体验**:深入适配系统特性,具备多标签页、多窗口管理及系统托盘驻留;状态恢复能力细致到重开时自动还原每个标签页上一次的阅读视口位置;提供可独立置顶的小窗模式、4 套预设主题、4 种界面语言,在 macOS 上还原生支持了 Quick Look 快速预览。
---
[03:40](https://www.bilibili.com/video/BV1d7pK6eEw5?t=220s) 最难得的坦诚:公开功能边界与安全提示
在开源软件社区中,Nomo 最令人敬佩的特质在于其毫无保留的诚实。其项目 README 中专门开辟了名为“功能边界”的一节,白纸黑字地罗列出产品的各项局限: - 全局查找替换目前仅作用于当前打开的单篇文档,不支持跨文件项目搜索。 - 文档格式检查(Linter)功能仍处于 Beta 阶段,因此默认处于关闭状态,开启后也仅作静态问题提示,绝不会擅自改写文档源码。 - 超过设定安全阈值的超长 Markdown 文件,会自动降级进入“只读源码模式”,避免渲染崩溃。 - 本地链接解析明确不支持 UNC 路径。
此外,由于团队资源有限,现阶段的安装包尚未购买昂贵的开发者代码签名证书,在 Windows 上首次运行会触发 SmartScreen 拦截警告,在 macOS 上则会撞上 Gatekeeper 拦截。团队没有对此遮遮掩掩,而是在文档中开门见山地向用户解释原因,并主动附上了完整的 MD5 校验清单,供用户下载后核验防篡改。“把丑话说在前面是小项目暂信任的唯一路径,他做到了。”
---
[04:22](https://www.bilibili.com/video/BV1d7pK6eEw5?t=262s) 总结与研判:红海竞争的三句话
纵观 Nomo 的表现,可以得出三点非常清晰的客观判断:
第一,红海突围靠的是深度。诸如 GBK 编码兼容、基于临时文件的原子写盘、30% 视口锚点平滑同步等特性,每一项都是被市面上主流编辑器抛诸脑后的隐蔽角落。“中文开发者的细节敏感,恰好是国际产品的盲区。”
第二,明晰软件的目标受众。它最适合重度 Markdown 写作者,尤其是手头保留有陈年历史文档、频繁面对超大日志文件、或涉及跨平台编码转换场景的用户。对于执着于海量插件生态和双向链接网状知识图谱的人群,“追求插件生态和双链笔记的,Obsidian仍然是正解”,因为 Nomo 没有做知识管理系统的野心,“它做的就只是编辑器”。
第三,风险必须坦白直陈。Nomo 目前尚处于 0.5 版本,项目的核心主力仅有一人贡献了 300 多个 Commit,且安装包缺乏商业公证与数字签名。在当前阶段处理关键核心文档时,建议开启保存前自动快照机制,或者先观望等待其生态更加成熟稳固。
“编辑器的《红海》里,细节是唯一的护城河。照顾最老的那份文档是这个编辑器的态度”,四个月高频迭代 21 个版本的节奏,让这个倾注了大量细节心血的国产独立编辑器值得长期关注。
## Notable quotes > [04:22](https://www.bilibili.com/video/BV1d7pK6eEw5?t=262s) 中文开发者的细节敏感,恰好是国际产品的盲区。 — AI技术投降派
> [04:22](https://www.bilibili.com/video/BV1d7pK6eEw5?t=262s) 编辑器的《红海》里,细节是唯一的护城河。 — AI技术投降派
> [04:22](https://www.bilibili.com/video/BV1d7pK6eEw5?t=262s) 追求插件生态和双链笔记的,Obsidian仍然是正解 — AI技术投降派
## Mentioned Nomo, Typora, MarkText, Obsidian, GitHub, Tauri 2, Svelte 5, CodeMirror 6, ProseMirror, Shiki, KaTeX, Mermaid, PicGo, macOS, Windows, SmartScreen, Gatekeeper
## Video description Markdown编辑器是片红海:Typora收费了,MarkText停更了,Obsidian越来越重。今年五月,GitHub上多了个新选手Nomo,三人小团队,四个月发了二十一个版本。它凭什么入场?答案藏在细节里——这个编辑器连你十年前的GBK编码老文档,都照顾到了。
▸ 核心体验:语义编辑和源码模式,共享同一份文档。所见即所得的界面里标题就是标题的样子;切到源码模式,看到的是同一篇文档的Markdown原文。两种视图一个数据源(基于ProseMirror即时解析),不存在传统双栏预览的左右割裂。技术栈:Tauri 2 + Svelte 5 + CodeMirror 6。
▸ 细节一,编码:打开时识别并保留UTF-8、UTF-8 BOM、UTF-16 LE/BE和GBK四种编码,存回去还是原编码。中文用户的实打实痛点:十年前的老笔记多是GBK,不少现代编辑器打开就是乱码,另存一次就永久毁了。Nomo还留了一手:GBK文档里新增了无法表示的字符,保存直接失败,原文件分毫不动——宁可不存,不肯存坏。
▸ 细节二,安全写盘:临时文件替换方式保存,中途断电最多丢这次修改,不会留下半份文件。细节三,双栏跟随:不用强制等高同步,以视口30%位置的内容做锚点连续换算,手动滚动的一栏优先,配套专门文档交代实现边界。细节四,大文件:TXT/JSON走分段编辑引擎(分块读取+虚拟滚动+异步行索引),几百兆的日志照常滚动编辑,查找替换是后台流式任务带进度可取消。
▸ 功能面全家桶:Shiki高亮、KaTeX公式、Mermaid六种图模板、五类Callout、大纲拖拽整节移动、PicGo上传、导出HTML单文件内嵌图片、导出PDF按标题写书签、四主题四语言、可置顶小窗、状态恢复精确到每个标签的阅读位置、macOS Quick Look预览。
▸ 最难得的是诚实:README里专有一节"功能边界"——查找替换不跨文件、格式检查Beta默认关闭、超长Markdown进只读源码模式、UNC路径不支持,每条限制写得清清楚楚。安装包没配代码签名会撞SmartScreen/Gatekeeper,文档直接告诉你并附md5校验清单。把丑话说在前面,是小项目攒信任的唯一路径。
▸ 判断三句:①红海突围靠的是深度——GBK保留、临时文件写盘、锚点同步,每一个都是被大编辑器忽略的角落,中文开发者的细节敏感恰是国际产品盲区;②适合重度Markdown写作者,尤其是手里有老文档、大文件、跨编码场景的人(要插件生态和双链的,Obsidian仍是正解,Nomo只做编辑器);③风险直说:0.5版本、主力一人三百多提交、无签名无公证——重要文档启用保存前快照,或等它再稳一稳。
收尾:编辑器的红海里,细节是唯一的护城河。照顾最老的那份文档,是这个编辑器的态度。
安装:GitHub Releases下载 / brew install --cask nomo
来源:github.com/nomo-md/nomo · nomo-md.github.io
——时间轴—— 00:00 开场:红海与细节狂魔 00:28 核心体验:双模式一文档 01:06 细节一:GBK老文档 01:47 细节二三:安全写盘+锚点跟随 02:24 细节四:大文件分段引擎 02:54 功能面:全家桶但不越界 03:40 最难得的:功能边界与诚实 04:22 判断:三句话
[Source](https://www.bilibili.com/video/BV1d7pK6eEw5)