5分钟学会Markdown
你可能已经在不知不觉中使用过Markdown。在Slack消息中输入过**粗体**吗?在GitHub上写过README?在Reddit上格式化过帖子?那就是Markdown。
Markdown是一种使用简单符号格式化纯文本的轻量级方式。不是点击工具栏按钮来实现粗体、斜体、标题和列表,而是输入几个表示所需格式的字符。它由John Gruber和Aaron Swartz于2004年创建,此后成为开发者、作家和所有在网上工作的人的默认格式化语言。
为什么Markdown存在
在Markdown之前,为网页格式化文本意味着编写HTML。要让一个词加粗,你需要输入<strong>bold</strong>。要创建列表,你需要<ul><li>item</li></ul>。HTML功能强大但冗长,原始形式难以阅读。
Markdown通过提供人类可读的简写来解决这个问题。原始文本甚至在渲染之前就很容易阅读。格式化后的输出干净且专业。你同时获得了两个优势:可读的源文本和精美的输出。
你知道吗? Markdown的设计理念是原始文本应该"原样可发布,作为纯文本,看起来不像被标签或格式化指令标记过的样子"。这就是为什么Markdown语法使用的字符在视觉上暗示了它们产生的格式。
基本语法
以下是你开始高效使用Markdown所需的一切。
标题
使用井号(#)创建标题。更多井号表示更小的标题。
# 一级标题(最大)
## 二级标题
### 三级标题
#### 四级标题
粗体和斜体
用星号或下划线包裹文本:
**粗体文本**
*斜体文本*
***粗体加斜体***
列表
无序列表使用短横线、星号或加号。有序列表使用数字。
- 第一项
- 第二项
- 第三项
1. 第一步
2. 第二步
3. 第三步
链接
方括号放文本,圆括号放URL:
[点击这里](https://example.com)
图片
像链接一样,但前面加感叹号:

引用
使用大于号:
> 这是一段引用。它会以不同的缩进和样式显示。
代码
反引号用于行内代码,三个反引号用于代码块:
使用`print()`函数来输出文本。
对于多行代码块,使用三个反引号加上可选的语言标识符:
```python
def hello():
print("Hello, world!")
```
水平线
三个或更多短横线、星号或下划线:
---
表格
使用竖线和短横线:
| 姓名 | 角色 | 所在地 |
| --- | --- | --- |
| Alice | 开发者 | 柏林 |
| Bob | 设计师 | 伦敦 |
Markdown的应用场景
Markdown无处不在:
软件开发
- GitHub、GitLab、Bitbucket: README、问题、拉取请求和文档都使用Markdown编写。
- Stack Overflow: 问题和回答使用Markdown格式化。
- 代码文档: 许多文档生成器(Docusaurus、MkDocs、Jekyll)使用Markdown作为源格式。
通讯
- Slack: 支持Markdown的子集用于消息格式化。
- Discord: 使用Markdown实现粗体、斜体、代码块等功能。
- Reddit: 帖子和评论使用Markdown格式化。
写作和出版
- 博客: 许多静态网站生成器使用Markdown文件作为内容源。
- 书籍: 多种出版工具接受Markdown手稿。
- 笔记: Obsidian、Notion、Bear和Typora等应用围绕Markdown构建。
文档
- 技术文档: API文档、用户指南和Wiki通常使用Markdown。
- 内部知识库: 许多团队使用基于Markdown的Wiki。
提示 你现在就可以在浏览器中免费预览和练习Markdown:用Markdown写作。边输入边实时查看格式化输出。
Markdown风格
需要知道的一点是:Markdown有不同的"风格"。核心语法到处都一样,但某些平台添加了扩展:
| 风格 | 额外功能 | 使用者 |
|---|---|---|
| CommonMark | 严格规范 | 通用标准 |
| GitHub Flavored Markdown (GFM) | 任务列表、表格、删除线、自动链接 | GitHub |
| MultiMarkdown | 脚注、引用、元数据 | 学术写作 |
| R Markdown | 嵌入R代码、数据分析 | 数据科学 |
差异主要在高级功能上。基础部分(标题、粗体、斜体、列表、链接、图片、代码)在所有地方都一样。
常见错误
忘记空行
Markdown需要在许多元素前后留空行。标题前需要空行。列表前后需要空行。忘记这些空行是渲染问题最常见的来源。
不一致的列表标记
在同一个列表中混用-、*和+可能导致意外的渲染。选择一个并坚持使用。
符号后的空格
某些Markdown处理器要求标题中的#后面和列表中的-后面有空格。始终包含空格以确保安全。
# 正确的标题
#不正确的标题
- 正确的列表项
-不正确的列表项
警告 Markdown不支持所有格式化需求。如果你需要复杂布局、彩色文字、精确排版或印刷级文档,你可能需要HTML、LaTeX或文字处理器。Markdown最适合结构化的、以文字为重点的内容。
为什么值得学习Markdown
Markdown学习只需五分钟,长期却能节省大量时间。一旦掌握,你可以:
- 编写在GitHub上精美渲染的文档
- 在Slack和Discord中无需触碰鼠标即可格式化消息
- 做结构化笔记,可在不同应用间移植
- 从纯文本文件创建博客文章和网页内容
- 在基于文本的文档上协作,无需格式兼容性问题
投入与回报的比率是整个技术世界中最佳的之一。
现在就开始用Markdown写作:
免费,在浏览器中使用,边输入边实时预览。