#markdown #cat #less #document

bin+lib mdcat

Markdown 的 cat:在终端中显示 Markdown 文档

67 个版本 (14 个稳定版)

2.3.1 2024年8月4日
2.3.0 2024年7月28日
2.1.2 2024年3月11日
2.1.0 2023年10月16日
0.8.0 2018年2月15日

#75 in 文本处理

Download history 70/week @ 2024-05-04 69/week @ 2024-05-11 106/week @ 2024-05-18 94/week @ 2024-05-25 139/week @ 2024-06-01 87/week @ 2024-06-08 81/week @ 2024-06-15 81/week @ 2024-06-22 59/week @ 2024-06-29 307/week @ 2024-07-06 227/week @ 2024-07-13 137/week @ 2024-07-20 901/week @ 2024-07-27 494/week @ 2024-08-03 174/week @ 2024-08-10 111/week @ 2024-08-17

每月下载 1,701 次
用于 6 个 crates (5 个直接使用)

MPL-2.0 AND Apache-2.0

440KB
3.5K SLoC

mdcat

Markdown 的“花哨” cat (即,CommonMark)

$ mdcat sample.md

mdcat showcase with different colour themes

WezTerm 中使用 mdcat,带有“One Light (base16)”、“Gruvbox Light”和“Darcula (base16)” (从左到右),并使用 JetBrains Mono 作为字体。

功能

mdcatiTerm2WezTermkitty 上表现最佳,并且拥有支持斜体的良好终端字体。然后它

  • 优雅地渲染所有基本 CommonMark 语法,
  • 使用 syntect 突出显示代码块,
  • 显示 链接,并在支持的终端中内联显示图像(见上面,其中“Rust”是一个可点击的链接!),
  • iTerm2 中为标题添加跳转标记(使用 ⇧⌘↓ 和 ⇧⌘↑ 向前和向后跳转)。
终端 基本语法 语法高亮 图像 跳转标记
基本 ANSI¹
Windows 10 控制台
术语
iTerm2 ✓³
kitty ✓³
WezTerm ✓³
VSCode ✓³
  1. mdcat 要求终端支持删除线格式和 内联链接。它不会在不支持这些功能的终端(例如 Linux 文本控制台)上正确渲染删除线文本和链接。
  2. VTE 是 Gnome 的终端仿真库,被许多流行的 Linux 终端仿真器使用,包括 Gnome 终端、Xfce 终端、Tilix 等。
  3. 使用 resvg 渲染 SVG 图像,请参阅 SVG 支持

不支持

  • 脚注和表格的 CommonMark 扩展。

用法

尝试 mdcat --help 或阅读 mdcat(1) 手册页。

安装

  • 发布二进制文件基于Github Actions构建。
  • 第三方软件包位于Repology
  • 您也可以使用以下命令手动构建mdcatcargo install mdcat(详情见下文)。

mdcat可以链接或复制到mdless;如果以mdless的方式调用,它将自动使用分页。

构建

运行cargo build --release。生成的mdcat可执行文件链接到系统的SSL库,即Linux上的openssl。

要构建一个独立的可执行文件,使用cargo build --features=static;生成的可执行文件使用纯Rust SSL实现。然而,它仍然使用系统的CA根。

打包

在打包mdcat时,您可能希望包括以下额外的工件

  • mdlessmdcat的符号链接或硬链接(见上文)。

  • 在构建后,通过调用mdcat --completions为相关shell生成shell完成,例如。

    $ mdcat --completions fish > /usr/share/fish/vendor_completions.d/mdcat.fish
    $ mdcat --completions bash > /usr/share/bash-completion/completions/mdcat
    $ mdcat --completions zsh > /usr/share/zsh/site-functions/_mdcat
    # Same for mdless if you include it
    $ mdless --completions fish > /usr/share/fish/vendor_completions.d/mdless.fish
    $ mdless --completions bash > /usr/share/bash-completion/completions/mdless
    $ mdless --completions zsh > /usr/share/zsh/site-functions/_mdless
    
  • 使用AsciiDoctor构建man页面的版本mdcat.1.adoc

    $ asciidoctor -b manpage -a reproducible -o /usr/share/man/man1/mdcat.1 mdcat.1.adoc
    $ gzip /usr/share/man/man1/mdcat.1
    # If you include a mdless as above, you may also want to support man mdless
    $ ln -s mdcat.1.gz /usr/share/man/man1/mdless.1.gz
    

故障排除

mdcat在需要时可以输出大量的跟踪信息。运行mdcat时,使用$MDCAT_LOG=trace获取完整的跟踪信息,或使用$MDCAT_LOG=mdcat::render=trace仅跟踪渲染。

许可证

版权所有 Sebastian Wiesner [email protected]

二进制文件受Mozilla公共许可证第2.0版的约束,请参阅LICENSE

大部分源代码受Mozilla公共许可证第2.0版的约束,除非另有说明,请参阅LICENSE;一些文件受Apache 2.0许可证的约束,请参阅http://www.apache.org/licenses/LICENSE-2.0

依赖关系

~17–35MB
~610K SLoC