大きなファイル
VMark はほとんどの Markdown ファイルを瞬時に開きますが、非常に大きなファイルは応答性を保つために追加の配慮が必要です。このページでは、VMark がそれらをどのように扱い、その動作をどのように調整できるかを説明します。
「大きい」とみなされる基準
VMark はファイルを開く前にサイズで分類します:
| サイズ | 区分 | 動作 |
|---|---|---|
| < 1 MB | 小 | WYSIWYG(リッチテキスト)モードで瞬時に開きます。 |
| 1 MB〜5 MB | 大 | デフォルトで ソースモード で開きます — 1 秒未満。ステータスバーに「WYSIWYG に切り替え」が表示されます。 |
| 5 MB〜50 MB | 巨大 | 最初に確認ダイアログが表示されます。ソースモードでのみ開きます。 |
| ≥ 50 MB | 拒否 | VMark はファイルを開くのを拒否します。代わりに less、bat などのツールを使用してください。 |
サイズはファイルを読み取らずに OS 経由で確認されるため、判定は高速で、データを事前読み込みすることはありません。
なぜ大きなファイルにソースモードを使うのか
ソースモードはビューポート仮想化を備えた CodeMirror を使用します — ドキュメントの可視部分のみがレンダリングされます。WYSIWYG モードは Tiptap/ProseMirror を使用し、ドキュメント内のすべてのブロックに対して DOM ノードを構築する必要があります。約 2,250 ブロックの 1.4 MB の Markdown ファイルでは、最初に開くのに約 15 秒かかります。同じファイルをソースモードでは 1 秒未満で開けます。
ボトルネックはパースではなく、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)を備えたソースモードが通常は最速のワークフローです。 フォーマット > CJK テキストをフォーマットなどのドキュメント全体に対するコマンドは、ソースモードのドキュメントでも正しく実行されます。
エッジケース
- 開いている間にファイルが大きくなる。 VMark は開いた時点のサイズに基づいて区分を決定します。編集中に 2 MB に成長したファイルは、選択したモードのままになります。
- シンボリックリンク。 サイズはターゲットファイルを反映するため、10 MB のファイルへのシンボリックリンクは巨大として扱われます。
- 空のファイル。 0 バイトのファイルは小として扱われ、WYSIWYG で開きます。
- サイズチェックと読み取りの間にファイルが消える。 通常の「ファイルが見つかりません」エラーが表示されます — 追加の警告は出ません。
既知の制限
- 閾値はバイトサイズですが、これは実際のコスト(ブロック数)の代理指標です。短いブロックを数千含む 600 KB のファイルは、長い段落の 1.2 MB のファイルよりも遅くなることがあります。デフォルト値は保守的に設定されています。
- 大きなファイル対応プロジェクトのフェーズ C(WYSIWYG レンダリングの遅延化)はまだリリースされていません — 状況については
dev-docs/plans/20260422-large-file-open-ux.mdを参照してください。