mdcat
は Markdown(CommonMark)をターミナル上で読みやすく整形して表示するコマンドです。コードブロックのシンタックスハイライト、リンク表示、対応端末ではインライン画像の描画にも対応します。iTerm2/kitty/WezTerm/VS Code の一部端末では見出しジャンプなどの拡張も使えます。 (man.archlinux.org)
実務では、README.md
や設計メモをローカル端末だけで素早くプレビューしたいときに使います。 (man.archlinux.org)
構文(Syntax)
mdcat [OPTIONS] [FILE]...
mdless [OPTIONS] [FILE]... # mdcat の同梱/同機能。既定でページャ表示
FILE
を省略または-
のときは標準入力を読みます。mdless
はmdcat
の別名で、既定でページャ(例:less
)に流します。 (man.archlinux.org)
主なオプション一覧
オプション | 説明 | 使用例 |
---|---|---|
-p, --paginate | 出力をページャに流す(mdless の既定) | mdcat -p README.md |
-P, --no-pager | ページャを使わない(mdcat の既定) | mdcat -P README.md |
-c, --no-colour | 文字装飾(色・スタイル)を無効化 | mdcat -c note.md |
--ansi | 端末検出をせず ANSI のみで整形 | mdcat --ansi file.md |
--columns N | 折り返しに使う最大カラム数を指定 | mdcat --columns 100 file.md |
-l, --local | リモート資源(HTTP/S 等)へアクセスしない | mdcat -l doc.md |
--fail | 読み込み失敗で即座に終了(既定は継続) | mdcat --fail a.md b.md |
--detect-terminal | 端末を検出して名前を表示して終了 | mdcat --detect-terminal |
--completions SHELL | 補完スクリプトを出力(bash /zsh /fish /powershell /elvish ) | mdcat --completions zsh |
-h, --help | ヘルプ表示 | mdcat --help |
-V, --version | バージョン表示(ビルトイン機能の情報付き) | mdcat --version |
(機能と書式は Arch の man に準拠) (man.archlinux.org) |
実行例
基本:Markdownファイルを整形して表示
説明:色や強調、コードのハイライト付きで端末に出力します。
コマンド
mdcat README.md
出力例:整形済みテキスト(端末依存で太字/斜体/打消しが反映)。 (man.archlinux.org)
ページャでゆっくり読む(mdless 相当)
説明:less
などのページャ経由で表示(※ページャ経由だと画像は表示されません)。
コマンド
mdcat --paginate long_doc.md # または: mdless long_doc.md
出力例:ページャ上に整形済みMarkdown。※ページャはプロプライエタリ拡張を扱えないため、画像は無効化されます。 (man.archlinux.org)
端末の対応機能を確認(画像対応の有無など)
説明:検出した端末名を表示。対応端末ではインライン画像が使えます。
コマンド
mdcat --detect-terminal
出力例(一例)
kitty
(対応端末例:iTerm2/kitty/Terminology/WezTerm/VS Code 1.80+) (man.archlinux.org)
リモート画像を禁止してオフラインで表示
説明:HTTP(S) 画像を取りに行かず、ローカル画像のみを利用します(リモート画像はリンク扱い)。
コマンド
mdcat --local report.md
出力例:外部画像はリンク表示。 (man.archlinux.org)
エラー例:--fail で途中失敗時に即終了
説明:存在しないファイルがあると、その時点で非0終了。
コマンド
mdcat --fail ok.md notfound.md more.md
echo $?
出力例(例)
mdcat: notfound.md: No such file or directory
1
(--fail
指定時は最初の失敗で止まります) (man.archlinux.org)
関連コマンド
cat
:プレーンテキストをそのまま出力(Markdown整形なし)。 (man.archlinux.org)bat
:cat
互換でシンタックスハイライト(Markdownは整形ではなく色付け中心)。 (man.archlinux.org)grip
:GitHub風にHTMLでプレビュー(ブラウザ向け)。pandoc
:Markdown→HTML/PDF/他形式に変換。
備考
- 端末対応:画像描画は iTerm2/kitty/Terminology/WezTerm/VS Code(1.80+) 等の対応端末でのみ有効。非対応やページャ使用時は画像を無効化して ANSI 整形のみ。SVG は Terminology では端末側機能、iTerm2/kitty/WezTerm/VS Code では
resvg
でラスタライズして表示します。 (man.archlinux.org) - 機能制限:CommonMark 0.30 + 一部拡張(タスクリスト/取り消し線)に対応。脚注は未対応、表セル内の折り返しやインライン装飾にも制限があります。HTMLはそのまま出力されます。 (man.archlinux.org)
- ネットワーク:リモート画像取得には内部で curl を利用(プロキシ環境変数に対応)。
--local
で無効化可能。 (man.archlinux.org) - 環境変数:
MDCAT_PAGER
/PAGER
(ページャ)、COLUMNS
/ROWS
(端末サイズ代替)、MDCAT_LOG
(トレース出力)、TERM
/TERM_PROGRAM
(端末検出)、http_proxy
など(curl準拠)。 (man.archlinux.org) - 導入:パッケージ配布や
cargo install mdcat
が案内されています。macOS等のパッケージでも提供あり。 (GitHub) - メンテ状況:公式リポジトリは 2025-01-10 にアーカイブ化(Read-only)。将来の更新性に留意してください。 (GitHub)
参考
- manページ(Arch)
https://man.archlinux.org/man/mdcat.1.en (man.archlinux.org) - GitHub(swsnr/mdcat)
https://github.com/swsnr/mdcat (GitHub) - crates.io(Rustパッケージ概要)
https://crates.io/crates/mdcat (Crates) - MacPorts(配布情報の例)
https://ports.macports.org/port/mdcat/details/ (MacPorts) - リリースノート(libcurl 依存に関する変更)
https://github.com/swsnr/mdcat/releases (GitHub)
コメント