一款轻量的面向 Markdown 的阅读器
SimpleMarkdown:一秒内打开所有 Markdown 文件。
一款轻量、跨平台、只读的 Markdown 查看器。打开大文件不卡,滚动丝滑,点目录瞬间跳转。
为什么做它
很多 Markdown 编辑器在打开体积稍大的文档时会明显变慢:整篇解析、整篇排版、再整篇渲染,文件越大越卡。可大多数时候,我们只是想读一份文档——技术手册、日志整理、会议纪要、导出的长文——并不需要编辑。
SimpleMarkdown 干脆放弃编辑功能,把全部精力放在一件事上:把 Markdown 又快又顺地读出来。
速度
在一台普通 Windows 笔记本上的实测(Release 构建,启动到首屏内容可见):
| 文件大小 | 打开速度 |
|---|---|
| 45 KB | 约 0.8 秒 |
| 10 MB(约 28 万行) | 约 0.9 秒 |
| 50 MB(约 143 万行) | 约 0.9 秒 |
- 点击目录跳转:50MB 文档里跳到任意章节,5~16 毫秒
- 滚动:单帧 P95 约 7~9 毫秒,滚轮、拖滚动条、PageUp/PageDown、Home/End 都顺滑
它是怎么做到的
核心思路是「别处理你看不到的东西」:
- 后台读取、分块索引:文件在后台线程读入,按段落边界切成小块(chunk),同时扫描出目录。首屏只需要第一批数据,和文件总大小无关。
- 只排版可见的块:滚动到哪里,才解析、排版、绘制哪里。已排版的块放进有上限的缓存。
- 锚点式滚动:滚动位置记为「第几块 + 块内偏移」,而不是一个全局像素值。上方块的高度从估算变成实测,画面不会跳动;点目录跳转也不必先算完前面所有内容。
- 全自绘渲染:没有 WebView、没有
QTextDocument,基于 Qt 的 QPainter 自己画,内存占用小。
功能一览
阅读
- 标题、段落、粗体/斜体/删除线、行内代码、围栏代码块(带语法高亮)
- 引用、有序/无序/任务列表、GFM 表格、分割线、链接
- 本地图片与 SVG 矢量图
- YAML Frontmatter 卡片渲染
- Ctrl+点击链接打开(网页走浏览器,相对路径的 .md 文件直接在新标签页打开)
导航
- 右侧目录面板:支持折叠,万级标题也能即时显示;点击跳转并短暂高亮
- 全文查找(Ctrl+F):显示命中数,Enter / Shift+Enter / F3 在命中间跳转,Esc 关闭
- 多标签页、文件夹面板(资源管理器式浏览一个目录)
体验
- 内容标记(荧光笔):选中文字右键标记,含标记的章节在目录里高亮,标记随会话保存
- 外部修改自动刷新:用你喜欢的编辑器改文件,保存后这里静默刷新并保持阅读位置
- 会话恢复:重启后回到上次的文件与阅读位置
- Ctrl+滚轮缩放字号、行间距可调
- 亮色 / 暗色主题,可跟随系统,支持自定义主题
- 演示模式(F11 进入,F11 或 Esc 退出):全屏只显示内容,适合直接拿文档做演讲
- 中文 / English 界面
- 导出 HTML / PDF、打印(文件小于 8MB)
- 自动识别 UTF-8 / UTF-16 / GBK 编码
稳定性
- 打开二进制文件、超过 1GB 的文件会给出明确提示
- 对畸形输入做了防护:超长单行、数千层嵌套、数百万标题都不会卡死界面
下载
打开页面后,在 Assets 里按平台选择:
| 平台 | 文件 |
|---|---|
| Windows 安装包(推荐) | SimpleMarkdown-<版本>-Setup.exe |
| Windows 免安装版 | SimpleMarkdown-<版本>-Portable.zip |
| Linux 通用 | SimpleMarkdown-<版本>-x86_64.AppImage |
| Debian / Ubuntu | simplemarkdown_<版本>_amd64.deb |
项目的 GitHub Actions 会在每次发布时自动构建并上传这些产物,所以上面的链接永远是最新版。历史版本与更新说明见 Releases 页面。
使用小贴士
- 命令行直接打开:
SimpleMarkdown.exe 文档.md;已有窗口在运行时,会在同一窗口新开标签页 - 把
.md文件拖进窗口即可打开 - 想编辑?「文件 → 用默认程序打开」交给你的编辑器,改完保存,查看器自动刷新
- 软件不联网、不上传、无遥测;检查更新只在你手动点击时才会访问网络
项目地址
源码、问题反馈与更新日志:https://github.com/ssk-wh/simple_markdown
基于 C++17 / Qt 5 与 cmark-gfm 构建,欢迎试用与反馈。
Comments
Comment plugin failed to load
Loading comment plugin