Skip to content

大型檔案

VMark 開啟大多數 Markdown 檔案都能瞬間完成,但極大型檔案需要額外處理才能維持流暢的反應。本頁說明 VMark 是如何處理這類檔案,以及你可以怎麼調整相關行為。

什麼算「大型」

VMark 會在開啟前先依大小將檔案分級:

大小級別行為
< 1 MB小檔立即在所見即所得(WYSIWYG)模式中開啟。
1 MB – 5 MB大檔預設以 原始碼模式 開啟,通常於一秒內完成。狀態列會提供「切換到 WYSIWYG」連結。
5 MB – 50 MB巨型先彈出確認對話方塊。僅能以原始碼模式開啟。
≥ 50 MB拒絕VMark 拒絕開啟此檔案。請改用 lessbat 等工具檢視。

大小是透過作業系統取得,不會讀取檔案內容,因此判斷迅速,也不會預先載入資料。

為何大型檔案改用原始碼模式

原始碼模式以 CodeMirror 為基礎,採用視窗虛擬化(viewport virtualization)—— 只渲染目前可見的部分。WYSIWYG 模式使用 Tiptap/ProseMirror,必須為文件中的每個區塊都建立對應的 DOM 節點。對一個 1.4 MB、約 2,250 個區塊的 Markdown 檔案而言,首次開啟大約需要 15 秒;而原始碼模式開啟同一檔案卻不到一秒。

瓶頸不是解析,而是 ProseMirror 視圖建構過程。即使把解析搬到主執行緒之外,實際感受到的等待時間也不會明顯改善。

狀態列提示

  • 以 WYSIWYG 開啟大型檔案時: 狀態列左側會顯示一個不確定進度的轉圈動畫,搭配文字 「正在開啟大型檔案(N MB)…」,直到編輯器準備就緒才消失。
  • 大型檔案被自動以原始碼模式開啟時: 狀態列會出現 「已以原始碼模式開啟(大型檔案)。」,並附上 切換到 WYSIWYG 連結。點擊連結會將目前分頁切換到 WYSIWYG。關閉再重新開啟此檔案會回到原始碼模式 —— 這個覆寫只在當下這個工作階段內有效。

設定

打開 設定 → 編輯器 → 大型檔案

  • 超過 1 MB 的檔案自動以原始碼模式開啟 (預設開啟) —— 如果你寧可在最大 5 MB 的檔案上接受較長的開啟時間以使用 WYSIWYG,可以關閉這個選項。
  • 開啟超過 5 MB 的檔案前提醒我 (預設開啟) —— 關閉後,5 MB 至 50 MB 之間的檔案不再彈出確認對話方塊,但仍會以原始碼模式開啟。

50 MB 的硬性拒絕門檻不開放使用者調整。Webview 無法安全地承載任意大的字串,否則有耗盡記憶體並崩潰的風險。

小技巧

  • 如果你必須在 WYSIWYG 中持續編輯一個非常大的檔案,可以考慮把它拆成多個較小的檔案,並透過一份索引文件互相連結。Markdown 對「分章節寫作」的友善程度其實相當高。
  • 如果你只是想閱讀或搜尋大型檔案,在原始碼模式下搭配行號標尺與 Find(Mod + F)通常是最快的方式。
  • 「格式 → 格式化中日韓文字」等整份文件層級的指令,在原始碼模式的文件上仍可正常執行。

邊界情況

  • 檔案在開啟期間變大。 VMark 是依開啟當下的大小決定級別。即使檔案在你編輯時膨脹到 2 MB,它仍會留在你選定的模式裡。
  • 符號連結。 大小是以實際指向的檔案為準,因此一個指向 10 MB 檔案的符號連結會被視為巨型檔案。
  • 空檔案。 零位元組的檔案視為小檔,以 WYSIWYG 開啟。
  • 檔案在大小檢查與讀取之間消失。 會出現一般的「找不到檔案」錯誤 —— 不會額外發出警告。

已知限制

  • 門檻採用位元組大小,實際上是「真實成本(區塊數量)」的近似值。一個 600 KB、含有上千個短小區塊的檔案,可能比一個 1.2 MB、由長段落構成的檔案還要慢。預設值偏向保守。
  • 大型檔案計畫的 Phase C(延遲 WYSIWYG 渲染)尚未推出 —— 進度詳見 dev-docs/plans/20260422-large-file-open-ux.md