Markdown 格式化工具

粘贴 Markdown 文档后,格式化工具会将其重写为一致的风格:修正标题层级跳跃(H4 之后不出现 H2)、填充表格列使其在源码中对齐、在区块之间强制保留一个空行、将列表标记统一为 -、合并连续空行,并将参考式链接定义排序到文档底部。渲染后的 HTML 不会改变,只有源文件变得更整洁,从而让差异(diff)一目了然。

格式化工具如何重写 Markdown

  1. 1

    粘贴 Markdown

    放入原始文档,README、文档页面或会议记录。

  2. 2

    选择样式选项

    列表标记(`-`/`*`)、标题样式(ATX/Setext)、表格对齐、换行列宽。

  3. 3

    格式化

    工具将文档解析为抽象语法树(AST),再按所选样式重新序列化。

  4. 4

    对比输出

    并排视图会在你粘贴回去之前显示改动了什么。

格式化工具修正的内容

  • 列表标记。 *-+ 都会统一为一个一致的字符(默认 -)。
  • 标题层级。 当 H2 后面紧跟 H4 而中间没有 H3 时发出警告(或提升级别)。
  • 空行。 区块之间恰好保留一个空行;不出现连续三行及以上。
  • 表格。 填充每一列,使竖线(|)在源码中对齐,尽管 Markdown 渲染器并不在意这一点。
  • 行尾空白。 删除每行行尾的空格,但保留有意为之的两个空格换行标记。
  • 参考链接。[label]: url 定义收集到文档末尾,并按字母顺序排列。
  • 代码围栏。 语言标签统一为小写;基于缩进的代码块会转换为围栏代码块。

你可以设置的样式选项

选项 默认值 备选
列表标记 - *+
标题样式 ATX H1/H2 使用 Setext
强调分隔符 * _
加粗分隔符 ** __
换行列宽 0(关闭) 80、100、120
排序参考链接 开启 关闭

为什么一致的 Markdown 很重要

在团队仓库中,不一致的 Markdown 会产生嘈杂的差异:每当有人用不同的编辑器保存文件时,列表标记就会互换,表格也会重新排布。格式化工具强制统一风格,让拉取请求的评审者只看到内容变更。可以把它看作面向散文的 prettier

何时不应格式化

  • 围栏代码块 会逐字节保持不变,格式化工具绝不会改动代码块的内容。如果格式化改变了代码,那就是一个错误。
  • 窄宽度下有意的硬换行(终端项目中的 readme.md)在你启用换行列宽时会被重新换行。如果你要保留手动调整的换行,请关闭换行。
  • 嵌入的 HTML 块 原样通过。

直接替代方案

如果你更喜欢本地 CLI,格式化工具使用与 remark-stringifyremark-gfm 插件相同的 AST 规则。prettier --parser markdown 也能产生类似的结果。

常见问题

不会。格式化工具只重写源码,格式化前后渲染出的 HTML 输出应当一致。如果你看到渲染结果发生变化,请作为错误上报。

不会。文件顶部的 YAML 或 TOML front-matter 会被识别并原样通过。

可以,将换行列宽设为 80、100 或 120,段落就会被重新换行。代码围栏内的行绝不会被改动。

不会。格式化工具假定你的链接可用;它只会重新整理参考链接定义。请另行使用链接检查工具。

不会。解析和格式化都在你的浏览器中运行;内容绝不会离开你的设备。

相关工具

此工具还提供其他语言版本