从“扁平化编辑”到“结构化阅读”:我为什么开发 Markdown Navigator
即使你不知道什么是 Markdown,但你一定见过那些由 # 号和星号构成的特殊排版。当你复制大模型的回答时,那些能自动生成标题、列表和加粗的纯文本,背后正是 Markdown 在定义逻辑结构。
作为一个 Markdown 重度爱好者,我几乎所有的代码文档、学习笔记甚至是日常构思都在这种语法下完成。对我而言,Markdown 不仅是一种格式,更是一种组织思维的逻辑方式。
今天想分享的,是我为了找回在 Markdown 编辑中失落的“掌控感”,而开发 Markdown Navigator 的故事。
Markdown 的本质:不只是纯文本
Markdown 的核心价值在于其语义化的文本结构。通过轻量级标记,它将文档的逻辑层级与纯文本深度绑定。然而,在长文档的编辑过程中,如何实现细粒度的结构化跳转,始终是一个未被完全解决的效率痛点。
目前的编辑器(如 VS Code)通常提供大纲视图(Outline View)或侧边预览。但在实际操作中:
- 大纲视图颗粒度太粗,只能跳标题,找不着行内的加粗或链接。
- 侧边预览需要频繁在编辑区和预览区之间切换,亦无法细粒度地定位编辑位置。
对于追求效率的你我来说,这种“从结构化阅读到扁平化编辑”的断层,是一种心流干扰。
屏幕阅读器在网页上的成功逻辑
作为 NVDA 用户,我们习惯了在浏览器中通过“浏览模式”精准定位:
- 按
H跳到下一处标题(Heading)。 - 按
T跳到下一处表格(Table)。 - 按
K跳到下一处链接(Link)。
这种“单键导航”的逻辑之所以强大,是因为屏幕阅读器解析了 HTML 的语义树。它让线性听觉具备了“视觉扫视”般的跨越能力。
消失的“结构感”:编辑时的尴尬
然而,当我们切回编辑器(如记事本、Notepad++)去写 Markdown 时,这种结构感消失了。
在屏幕阅读器的世界里,编辑区是一个扁平的、线性的文本块。你想找刚才写的那个三级标题?只能靠方向键逐行扫视,或者用 Ctrl + F 手动查找。
既然 Markdown 从诞生起就自带语义,为什么我们在编辑时不能像浏览网页一样去快捷导航呢? 这就是我开发 Markdown Navigator 的初衷。
Markdown Navigator 做了什么?
我希望在 Markdown 编辑层,重建 NVDA 对网页/文档的高效浏览体验。
- 90% GFM 语法适配
除了标准 Markdown,我针对 GitHub Flavored Markdown (GFM) 做了深度适配。目前已覆盖 90% 的核心语法,包括表格(Tables)、任务列表(Task Lists)和删除线等扩展特性。 - 全语义单键跳转
开启Markdown浏览模式后(NVDA + Shift + Space),编辑器即刻具备单键导航能力:H跳转到下一个标题、L/I跳转到下一个列表/列表项、Q跳转到下一个引用、C跳转到下一个代码块、B跳转到下一个加粗的文本。如需查看所有支持的语义标记跳转命令可参考插件帮助文档。 - 表格导航
这也是核心痛点之一。在 Markdown 编辑阶段修改表格通常很混乱,我实现了逻辑坐标映射。使用Ctrl + Alt + 方向键,你可以在单元格间纵横穿梭,光标会精准落在单元格内,不再需要手动数那些|符号。 - 容器跳转
在表格、列表和引用块内可以快速跳转到开头/结尾处。
性能与底层实现
处理大规模文档时,性能是第一位的。
为了避免频繁IPC调用带来的性能开销,我设计了 FastDocumentManager 机制。它会在内存中建立一套字符偏移映射,确保在大型文档内跳转也可以在毫秒内完成。
结语
Markdown Navigator 的逻辑很简单:让光标具备感知语义的能力。 它消除的是从“结构化阅读”到“扁平化编辑”之间的体验断层,让用户能全身心地留在键盘上。
插件下载
- 插件商店搜索关键词: markdownNavigator
- 插件商店链接: https://addonstore.nvaccess.org/?addonId=markdownNavigator