Markdown 是一种在纯文本文件里写出带格式文字的方法。没有哪个应用程序拥有它、没有二进制格式、不用担心版本兼容。你写下那些本身就长得像它所产生之格式的符号,之后由别的东西把它们变成标题和粗体。
它 2004 年被发明出来,是为了不打 HTML 就能写博客。二十年后,它是多数笔记软件、几乎所有开发文档、聊天工具、静态网站生成器的输入格式,也是人们为 AI 工具写提示和文档的方式。没有人把它标准化到这个位置;它扩散开来,是因为它在被渲染之前就已经读得懂。
# 标题——一个井号最大,井号越多越小。**粗体** 和 *斜体*。- 项目 是项目符号;1. 项目 是编号列表。[文字](https://example.com) 是链接。 是图片——同样的东西前面加个感叹号。> 引用文字 是引言块。代码。大部分就这些了。你可以在读完这一节的时间内学会全部,这是它扩散的第二个原因。
两者都在描述结构化的文字,两者都是纯文本文件。差别在于当一个人去看源码时会发生什么。
HTML 把每样东西都包在标签里。一个只有一个粗体字的段落,标点比语言还多。它毫无歧义、机器很爱,但读它是件苦差事,手写它很慢。
Markdown 的符号是挑来长得像它意思的。一份列表在任何东西渲染它之前就已经像一份列表。标题会跳出来。用星号标的强调读起来就是强调。没渲染的源码本身就读得懂,这意味着一个 Markdown 文件即使在一台什么都没装的机器上、用最简陋的文本编辑器打开,都还是有用的。
这件事比语法重要,而且是人们几年之后才会体会到的那一部分。
一则记在封闭软件里的笔记,它的代价一直是隐形的,直到你想把所有东西搬出来的那一天。Markdown 没有那一天。
这是诚实的抱怨,而且是真的。
2004 年最初的描述很松散,不同工具各自用不同方式填补空缺。今天你会遇到:
基本语法到哪都一样。分歧从表格开始,以及表格之后的一切,这就是为什么一份文档在这个软件里看起来没问题,在另一个里会有细微的错。如果这个文件要流通,就守着核心语法。
Markdown 完全不能控制页面尺寸、边距、字体、分栏、精确间距,或在哪里换页。这不是疏漏——这就是设计。Markdown 描述的是一个东西是什么(一个标题、一则引言、一份列表),不是它长什么样。外观由之后渲染它的东西决定。
所以 Markdown 不适合有设计的文档:一份手册、一张海报、一份表单、一纸版式即意义的合同。它适合结构要紧、而外观可以在下游再决定的文字。
因为 Markdown 是源格式,交付通常意味着转换。要上网就转 HTML,有人需要固定的页来打印或签名就转 PDF,审阅者要跟踪修订就转 Word,要上演示工具就转幻灯片。
值得守住的纪律是:只往外转,绝不去改输出然后把它当正本。一旦修正开始住在导出的 PDF 里,那个 Markdown 文件就变成过期的副本,优势也就没了。
任何希望十年后还留着这些笔记的人、任何在写文档的人、任何起草的文字最后会出现在好几个地方的人。学它花一个下午,消掉的是未来一整类的问题。
对一份必须长得跟某个东西一模一样的文档,以及对需要熟悉的文字处理软件的协作者,它是错的工具。那是真实的限制,不是打发掉它的理由。
# 标题、**粗体**、*斜体*、- 列表、[文字](网址)