Skip to content

大文件

VMark 能秒开绝大多数 Markdown 文件,但是非常大的文件需要额外处理才能保持响应流畅。本页介绍 VMark 是如何处理这类文件的,以及你如何调整这一行为。

什么算"大文件"

VMark 在打开文件之前会先按文件大小分级:

大小分级行为
< 1 MB立即以 WYSIWYG(富文本)模式打开。
1 MB – 5 MB默认以 源码模式 打开 —— 亚秒级响应。状态栏会提供"切换到 WYSIWYG"。
5 MB – 50 MB巨大先弹出确认对话框。仅以源码模式打开。
≥ 50 MB拒绝VMark 拒绝打开。请改用 lessbat 或类似工具。

文件大小通过操作系统获取,无需读取文件内容,因此判断很快,也不会预加载数据。

为什么大文件用源码模式

源码模式使用 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