Skip to content

サポートされるフォーマット

VMark は以下のすべてのファイル形式を直接開きます。差別化ポイントはスキーマ対応プレビューです: ファイルが既知のアーティファクトである場合、VMark は汎用 JSON ツリーではなく、適切なビューをレンダリングします。

フォーマットの有効化

Markdown、プレーンテキスト、YAML/YML は常にフルエディタで開かれます — これらは安定したデフォルトです。以下のその他すべてのフォーマットはデフォルトでオフであり、設定 → フォーマットのカテゴリトグルの後ろにあります:

トグル有効にするもの
データフォーマット.json.jsonl.toml(分割ペインのソース + ツリー、Cargo / package.json / pyproject スキーマレンダラー付き)
ダイアグラム & SVG.mmd.svg(分割ペインのソース + サニタイズされたライブレンダリング)
HTML プレビュー.html.htm(サンドボックス iframe — HTML のセキュリティモデルを参照)
コードビューア12 種類の読み取り専用コードビューア(.ts.tsx.js.jsx.py.rs.go.css.sh.bash.rb.lua

カテゴリがオフの場合、対応する拡張子はプレーンテキストのフォールバックに移行するため、ファイルは引き続き開けます — プレビュー/スキーマビューなしで。トグルを切り替えると、レジストリがその場で再構築されます。開いているタブは適切なアダプターで再マウントされます。

マルチフォーマットサポートへのアップグレード後の最初の起動時、VMark は設定 → フォーマットを促す 1 回限りのトーストを表示します。それを閉じた場合(または新規インストールの場合)、パネルはいつでも設定 → フォーマットにあります。

一覧

ファミリー拡張子デフォルトエディタプレビュー
Markdown.md.markdown.mdown.mkd.mdx常にオンWYSIWYG + ソースモードレンダリングされた文章
プレーンテキスト.txt常にオンソース
データ — YAML.yaml.yml常にオンソース + ツリーナビゲート可能なツリー、スキーマ対応(GitHub Actions)
データ — JSON.json.jsonlデータフォーマットトグルが必要ソース + ツリーナビゲート可能な JSON ツリー、スキーマ対応(package.json
データ — TOML.tomlデータフォーマットトグルが必要ソース + ツリーナビゲート可能なツリー、スキーマ対応(Cargo.tomlpyproject.toml
ダイアグラム.mmdダイアグラム & SVG トグルが必要ソース + レンダリングライブ Mermaid ダイアグラム
ベクター.svgダイアグラム & SVG トグルが必要ソース + レンダリングサニタイズされたインラインレンダリング
Web.html.htmHTML プレビュートグルが必要ソース + レンダリングサンドボックス iframe(空の sandbox=""、DOMPurify、CSP)
コード(読み取り専用).ts.tsx.js.jsx.py.rs.go.css.sh.bash.rb.luaコードビューアトグルが必要ビューア(編集への切り替え可)

コードファイルはデフォルトで読み取り専用となり、編集を有効化または外部エディタで開くを提供するバナーが表示されます。

スキーマ対応プレビュー

パスまたはコンテンツが既知のスキーマと一致する場合、VMark は汎用ツリーの代わりに適切なビューを表示します。

GitHub Actions ワークフロー(.github/workflows/*.yml

ワークフローの視覚化(ジョブ DAG、トリガー、パーミッション)で開きます。

  • パス検出: .github/workflows/ 下の .yml / .yaml ファイルは、YAML が不正な場合でもワークフローレンダラーにルーティングされます — 空のツリーではなく診断付きの縮退ビューが表示されます。(ファイルは最初に YAML アダプターに到達する必要があります。.yml/.yaml 拡張子が必要です。)
  • コンテンツ検出: トップレベルの on:jobs: キー。

Cargo.toml

Rust 依存ツリーで開きます — ランタイム、dev、ビルド依存関係、バージョン仕様、フィーチャーフラグ付き。

  • パス検出: POSIX または Windows パスでファイル名 Cargo.toml(大文字/小文字不問)。
  • コンテンツ検出: [package] または [workspace] ヘッダー。
  • ネットワーク呼び出しなし — VMark は crates.io を解決しません。

package.json

npm 依存ツリーで開きます — dependenciesdevDependenciespeerDependenciesoptionalDependencies

  • パス検出: ファイル名 package.json
  • コンテンツ検出: トップレベルの namedependencies / devDependencies / peerDependencies のいずれか。

pyproject.toml

Python 依存ツリーで開きます — PEP 621([project] + [project.optional-dependencies])と Poetry([tool.poetry.dependencies][tool.poetry.dev-dependencies][tool.poetry.group.<name>.dependencies])の両方。

  • パス検出: ファイル名 pyproject.toml
  • コンテンツ検出: [project] または [tool.poetry] ヘッダー(クリーンな TOML パースを条件とする)。

編集ルール

  • Markdown はフルツールバー、段落フォーマット、CJK ルール、数式、Mermaid、脚注などすべての既存 Markdown 機能を搭載。
  • データフォーマット(JSON、YAML、TOML)はソースペインにパースエラーのガターマーカー付きで表示。ツリープレビューは入力に合わせてリアルタイム更新。Markdown 専用のメニューアクション(CJK フォーマット、ブロック挿入、段落フォーマット)は無効化されます。
  • ビジュアルフォーマット(Mermaid、SVG、HTML)はソースペインにレンダリングビューが右ペインに表示(デバウンス付き)。
  • コードフォーマットはシンタックスハイライト付きビューアで開きます。その場で編集に切り替えるか、外部エディタで開けます(下記参照)。

検索、保存、コンテンツ検索

  • Cmd+O フィルター: 登録済みすべてのフォーマットをカバーする「すべてサポート済み」プリセット。名前を付けて保存フィルターとデフォルト保存拡張子は、アクティブなタブのフォーマットアダプターから導出されます。.toml ファイルを保存すると、.toml が拡張子として提案されます。
  • ドラッグ&ドロップは登録済みのすべての拡張子を受け付けます。
  • 名前を付けて保存フィルターとデフォルト拡張子は、アクティブなタブのフォーマットアダプターから導出されます。
  • Cmd+Shift+H コンテンツ検索(「ファイル内を検索」)はすべてのテキスト系フォーマット(Markdown、txt、json、yaml、toml、html、svg、Mermaid)をインデックス化します。コードファイルはデフォルトで除外されます — コードビューアモードです。

HTML のセキュリティモデル

マルチフォーマット計画の ADR-4 に従い、HTML プレビューは 3 つの独立した防御レイヤーで構成されています:

  1. <iframe sandbox=""> 空の許可リスト付き — スクリプトなし、同一オリジンなし、フォームなし、ポップアップなし。サンドボックスは iframe 属性のみで強制されます(MDN によると CSP の <meta> はサンドボックスではありません)。
  2. DOMPurify サニタイゼーションが最初に実行 — <script>javascript: URL、インラインイベントハンドラ、base-href トリックを除去。
  3. CSP <meta> インジェクションdefault-src 'none'; img-src data:; style-src 'unsafe-inline'; font-src data:; base-uri 'none'; — iframe 内のリソース読み込みを制限。

バリデーターはスクリプトタグ、javascript: URL、インラインイベントハンドラを警告として表示し、何がブロックされているか確認できます。

外部エディタで開く

コードファイルの場合、読み取り専用バナーの外部エディタで開くボタンは選択したエディタを起動します。解決順序:

  1. 設定 → フォーマット → 外部エディタ(GUI フィールド — 設定を参照)。macOS では .app バンドル、Linux/Windows では実行ファイル、またはシェルで解決できるものを選択。
  2. $VMARK_EXTERNAL_EDITOR(プロジェクトレベルの環境変数オーバーライド)
  3. $VISUAL
  4. $EDITOR
  5. プラットフォームデフォルト(macOS では open -t、Windows では notepad.exe、Linux では xdg-open

GUI 設定は環境変数より優先されます — 明示的なものが暗黙的なものに勝ちます。フィールドを空にすると、環境変数のフォールバックチェーンを使用します。

VMark はログインシェルの PATH を経由してルーティングするため、macOS GUI アプリから起動しても VS Code / Cursor / JetBrains ラッパーが正しく解決されます。

セキュリティゲート

open_in_external_editor Tauri コマンドは以下を拒否します:

  • 存在しないパス
  • ディレクトリおよびその他の非通常ファイル(ソケット、デバイス)
  • 正規化された拡張子が VMark の登録済みフォーマットセットにないパス
  • 正規のターゲットがいずれかのチェックに失敗するシンボリックリンク

侵害されたウェブビューは、このボタンを使用して任意のシステムファイル(パスワード、キーなど)で外部エディタを起動することはできません — VMark 自身が開くパスのみが対象です。

サポートされていないもの

計画の非目標に従い:

  • コードエディタではありません。 LSP、オートコンプリート、リファクタリング、デバッガ、git ガターはありません。
  • 「すべてのプレーンテキスト形式」ではありません。 上記の表を参照した制限されたスコープです。
  • HTML スクリプトの実行はありません。 サンドボックスレンダリングのみです。
  • v1 では Markdown 以外のフォーマットの印刷/エクスポート/HTML としてコピーはありません。
  • コードビューアとしてまだサポートされていないもの: Zig、Swift、Kotlin、Java、Elixir、OCaml、および 12 拡張子セット外のその他の言語。判断ルールは「私たち自身が使用する言語」です — 追加を希望する場合は issue を提出してください。

一覧にないフォーマットで意図的に対象外でないものがあれば、issue を提出してください。