大文件
VMark 能秒开绝大多数 Markdown 文件,但是非常大的文件需要额外处理才能保持响应流畅。本页介绍 VMark 是如何处理这类文件的,以及你如何调整这一行为。
什么算"大文件"
VMark 在打开文件之前会先按文件大小分级:
| 大小 | 分级 | 行为 |
|---|---|---|
| < 1 MB | 小 | 立即以 WYSIWYG(富文本)模式打开。 |
| 1 MB – 5 MB | 大 | 默认以 源码模式 打开 —— 亚秒级响应。状态栏会提供"切换到 WYSIWYG"。 |
| 5 MB – 50 MB | 巨大 | 先弹出确认对话框。仅以源码模式打开。 |
| ≥ 50 MB | 拒绝 | VMark 拒绝打开。请改用 less、bat 或类似工具。 |
文件大小通过操作系统获取,无需读取文件内容,因此判断很快,也不会预加载数据。
为什么大文件用源码模式
源码模式使用 CodeMirror 配合视口虚拟化 —— 只渲染文档中可见的部分。WYSIWYG 模式使用 Tiptap/ProseMirror,必须为文档中的每一个块构建一个 DOM 节点。在一份 1.4 MB / 约 2,250 块的 Markdown 文件上,首次打开大约要 15 秒;源码模式打开同一份文件则不到一秒。
瓶颈不在解析,而在 ProseMirror 的视图构建。把解析挪到主线程之外并不会显著缩短可感知的等待时间。
状态栏提示
- 以 WYSIWYG 打开大文件时: 状态栏左侧会出现一个不确定进度的转圈,标签为 "正在打开大文件(N MB)…",直到编辑器挂载完成、可交互为止才消失。
- 文件被自动以源码模式打开时: 状态栏会显示 "以源码模式打开(大文件)。",并附上一个 切换到 WYSIWYG 链接。点击该链接会把当前标签页翻到 WYSIWYG。关闭并重新打开该文件后,会回到源码模式 —— 该覆盖只在当前会话内生效。
设置
打开 设置 → 编辑器 → 大文件:
- 将超过 1 MB 的文件自动以源码模式打开 (默认开启) —— 关闭后,VMark 会让 5 MB 以下的文件都以 WYSIWYG 打开,代价是更长的打开时间。
- 打开超过 5 MB 的文件前先警告 (默认开启) —— 关闭后,5 MB 至 50 MB 之间的文件会跳过确认对话框,但仍以源码模式打开。
50 MB 的硬性拒绝阈值不可调。Webview 无法在不冒内存溢出风险的前提下安全地容纳任意大小的字符串。
小贴士
- 如果你确实必须在 WYSIWYG 中持续编辑非常大的文件,考虑把它拆成更小的多份文件,通过一份索引文档相互链接。Markdown 当作一组小章节使用效果很好。
- 如果你只是想阅读或搜索一份大文件,源码模式配合行号槽和
查找(Mod + F)通常是最快的工作流。 - 在源码模式的文档上,
格式 > 格式化 CJK 文本等针对全文的命令仍然能正确运行。
边界情况
- 文件在打开后变大。 VMark 是按打开时刻的大小决定分级的。一份你在编辑过程中长到 2 MB 的文件,会保持你最初选择的模式。
- 符号链接。 大小反映的是目标文件,因此一个指向 10 MB 文件的符号链接会被当作"巨大"对待。
- 空文件。 零字节文件被算作"小",并以 WYSIWYG 打开。
- 文件在体积检查与读取之间消失。 此时会触发常规的"找不到文件"错误 —— 不会有额外警告。
已知限制
- 阈值用的是字节大小,这是真实代价(块的数量)的代理量。一份 600 KB 但有上千个短块的文件,可能比一份 1.2 MB 由长段落组成的文件还慢。当前默认值偏保守。
- 大文件计划的 C 阶段(延迟 WYSIWYG 渲染)尚未发布 —— 进度参见
dev-docs/plans/20260422-large-file-open-ux.md。