Markdown 语法完全指南:从入门到精通
什么是 Markdown?
Markdown 是一种轻量级标记语言,由 John Gruber 于2004年创建。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 HTML。本文是一份完整的 Markdown 教程,将带你从基础到进阶,掌握所有常用语法。
核心优势:
- 📝 专注写作:无需关心排版格式
- 🔄 平台通用:GitHub、博客、笔记软件都支持
- 📱 纯文本:任何编辑器都能打开
- 🔧 可转换:轻松转为 HTML、PDF 等格式
基础语法
标题语法
标题是文档结构的骨架,Markdown 提供了六级标题,对应 HTML 的 <h1> 到 <h6> 标签。
语法示例:
1
2
3
4
5
6
| # 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
|
实际效果:
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
段落与换行
段落由一个或多个连续的文本行组成,段落之间通过空行分隔。
语法示例:
1
2
3
4
5
| 这是第一段落。Markdown 中的段落不需要特殊标记,
只需要在段落之间用空行分隔即可。
这是第二段落。如果你想要手动换行(<br>标签),
可以在行末添加两个空格然后回车。
|
实际效果:
这是第一段落。Markdown 中的段落不需要特殊标记,只需要在段落之间用空行分隔即可。
这是第二段落。如果你想要手动换行(
标签),
可以在行末添加两个空格然后回车。
文本强调
语法示例:
1
2
3
4
| - *斜体* 或 _斜体_
- **粗体** 或 __粗体__
- ***粗斜体*** 或 ___粗斜体___
- ~~删除线~~
|
实际效果:
- 斜体 或 斜体
- 粗体 或 粗体
- 粗斜体 或 粗斜体
删除线
列表
无序列表
语法示例:
1
2
3
4
5
6
7
8
| - 项目1
- 项目2
- 子项目2.1
- 子项目2.2
- 项目3
* 也可以用星号
+ 或者加号
|
实际效果:
有序列表
语法示例:
1
2
3
4
5
| 1. 第一步
2. 第二步
1. 第二步的子步骤
2. 第二步的另一个子步骤
3. 第三步
|
实际效果:
- 第一步
- 第二步
- 第二步的子步骤
- 第二步的另一个子步骤
- 第三步
链接
语法示例:
1
2
3
4
5
6
7
8
9
| [普通链接](https://www.example.com)
[带标题的链接](https://www.example.com "鼠标悬停时显示的标题")
<https://www.example.com> 或 <email@example.com>
[引用式链接][1]
[1]: https://www.example.com "可选标题"
|
实际效果:
图片
语法示例:
1
2
3
4
5
| 
![带引用的图片][logo]
[logo]: https://via.placeholder.com/150 "Logo"
|
实际效果:
![示例图片 替代文本]()
引用
语法示例:
1
2
3
4
5
6
| > 这是一段引用文本。
> 可以跨越多行。
>
> > 嵌套引用
>
> **注意:** 引用内可以使用其他 Markdown 语法。
|
实际效果:
这是一段引用文本。
可以跨越多行。
嵌套引用
注意: 引用内可以使用其他 Markdown 语法。
代码
语法示例:
1
2
3
4
5
6
7
8
9
10
| 行内代码:使用 `console.log('Hello World')` 输出。
代码块:
```javascript
function greet(name) {
return `Hello, ${name}!`;
}
console.log(greet('World'));
```
|
实际效果:
行内代码:使用 console.log('Hello World') 输出。
代码块:
1
2
3
4
| function greet(name) {
return `Hello, ${name}!`;
}
console.log(greet('World'));
|
分隔线
语法示例:
1
2
3
4
5
| 使用三个或更多的星号、减号或下划线创建分隔线:
---
***
___
|
实际效果:
进阶语法
表格
语法示例:
1
2
3
4
5
| | 左对齐 | 居中对齐 | 右对齐 |
|:-------|:--------:|-------:|
| 单元格1 | 单元格2 | 单元格3 |
| 文本 | 文本 | 文本 |
| 较长文本 | 较长文本 | 较长文本 |
|
实际效果:
| 左对齐 | 居中对齐 | 右对齐 |
|---|
| 单元格1 | 单元格2 | 单元格3 |
| 文本 | 文本 | 文本 |
| 较长文本 | 较长文本 | 较长文本 |
脚注
语法示例:
1
2
3
4
5
| 这里有一个脚注[^1],这里还有一个[^2]。
[^1]: 这是第一个脚注的内容。
[^2]: 第二个脚注可以包含多行内容。
缩进两格可以继续写。
|
实际效果:
这里有一个脚注,这里还有一个。
任务列表
语法示例:
1
2
3
4
5
| - [x] 已完成任务
- [ ] 未完成任务
- [ ] 待办事项1
- [x] 子任务1(已完成)
- [ ] 子任务2
|
实际效果:
定义列表
语法示例:
1
2
3
4
5
6
| Markdown
: 一种轻量级标记语言,由 John Gruber 创建。
HTML
: 超文本标记语言,是构建网页的标准语言。
CSS 和 JavaScript 通常与 HTML 一起使用。
|
实际效果:
- Markdown
- 一种轻量级标记语言,由 John Gruber 创建。
- HTML
- 超文本标记语言,是构建网页的标准语言。
CSS 和 JavaScript 通常与 HTML 一起使用。
自动链接
语法示例:
1
2
3
| 网址自动转换:https://www.example.com
邮箱自动转换:contact@example.com
|
实际效果:
网址自动转换:https://www.example.com
邮箱自动转换:[email protected]
转义字符
语法示例:
1
2
3
4
5
| 想要显示特殊字符时,使用反斜杠转义:
\*不会被解析为强调\*
\[不会成为链接\]
\`不会成为代码\`
|
实际效果:
*不会被解析为强调*
\[不会成为链接\]`不会成为代码`
HTML 元素样式展示
Markdown 完全兼容 HTML,可以在 Markdown 文档中直接使用 HTML 标签。
文本格式化标签
语法示例:
1
2
3
4
| <p>这是一个普通的段落。</p>
<p><strong>加粗文本</strong> 和 <em>斜体文本</em> 可以通过HTML实现。</p>
<p><ins>插入文本</ins> 和 <del>删除文本</del> 可以表示修订。</p>
<p><small>小号文本</small> 和 <mark>高亮文本</mark> 也很常用。</p>
|
实际效果:
这是一个普通的段落。
加粗文本 和 斜体文本 可以通过HTML实现。
插入文本 和 删除文本 可以表示修订。
小号文本 和 高亮文本 也很常用。
上标和下标
语法示例:
1
2
| 水分子:H<sub>2</sub>O
爱因斯坦质能方程:E = mc<sup>2</sup>
|
实际效果:
水分子:H2O
爱因斯坦质能方程:E = mc2
键盘和变量标签
语法示例:
1
2
| 按 <kbd>Ctrl</kbd> + <kbd>C</kbd> 复制文本。
<var>变量名</var> 表示变量。
|
实际效果:
按 Ctrl + C 复制文本。
变量名 表示变量。
缩写和定义
语法示例:
1
2
3
| <abbr title="Cascading Style Sheets">CSS</abbr> 用于样式设计。
<dfn>Markdown</dfn> 是一种轻量级标记语言。
|
实际效果:
CSS 用于样式设计。
Markdown 是一种轻量级标记语言。
引用和引文
语法示例:
1
2
3
| <cite>《设计模式》</cite> 是一本经典的编程书籍。
<q>引用文本</q> 用于行内引用。
|
实际效果:
《设计模式》 是一本经典的编程书籍。
引用文本
用于行内引用。
地址和联系信息
语法示例:
实际效果:
作者:张三
邮箱:[email protected]
最佳实践与技巧
代码块语法高亮
在代码块后指定语言,可以获得语法高亮:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| ```python
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
```
```javascript
// 斐波那契数列
const fibonacci = (n) => {
if (n <= 1) return n;
return fibonacci(n-1) + fibonacci(n-2);
};
```
|
实际效果:
1
2
3
4
| def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
|
1
2
3
4
5
| // 斐波那契数列
const fibonacci = (n) => {
if (n <= 1) return n;
return fibonacci(n-1) + fibonacci(n-2);
};
|
内嵌 HTML 的高级用法
1
2
3
4
5
6
7
8
| <div style="background-color: #f0f0f0; padding: 10px; border-radius: 5px;">
<h4 style="color: #333;">自定义样式块</h4>
<p style="color: #666;">这个区块使用了内联CSS样式。</p>
<ul>
<li>可以包含任何HTML元素</li>
<li>支持自定义样式</li>
</ul>
</div>
|
实际效果:
表格的高级用法
1
2
3
4
5
6
| | 特性 | 语法 | 示例 | 优先级 |
|:-----|:----:|:----:|-------:|
| 标题 | `#` | # H1 | 最高 |
| 列表 | `-` | - 项目 | 高 |
| 链接 | `[]()` | [文本](url) | 中 |
| 图片 | `![]()` |  | 低 |
|
实际效果:
| 特性 | 语法 | 示例 | 优先级 |
|---|
| 标题 | # | # H1 | 最高 |
| 列表 | - | - 项目 | 高 |
| 链接 | []() | 文本 | 中 |
| 图片 | ![]() | ![alt]() | 低 |
复杂列表嵌套
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| 1. **前端开发**
- HTML5
* 语义化标签
* 表单增强
- CSS3
1. Flexbox布局
2. Grid布局
- JavaScript
* ES6+新特性
* 框架
+ React
+ Vue
+ Angular
2. **后端开发**
- Python
* Django
* Flask
- Java
* Spring Boot
* Hibernate
|
实际效果:
前端开发
- HTML5
- CSS3
- Flexbox布局
- Grid布局
- JavaScript
后端开发
常见问题解答
Q1: Markdown 文件应该使用什么扩展名?
A: 通常使用 .md 或 .markdown 扩展名。
Q2: 如何在不同平台保持样式一致?
A: Markdown 关注内容结构,样式依赖于具体的渲染器。要保证一致性,可以使用标准语法,并配合 CSS 样式表。
Q3: Markdown 支持图片尺寸调整吗?
A: 标准 Markdown 不支持,但可以使用 HTML 的 <img> 标签:
1
| <img src="image.jpg" width="300" height="200" alt="描述">
|
Q4: 如何在表格中换行?
A: 可以使用 HTML 的 <br> 标签:
1
2
3
| | 列1 | 列2 |
|-----|-----|
| 第一行<br>第二行 | 内容 |
|
Q5: 如何创建目录?
A: 一些平台自动生成目录,也可以手动创建:
1
2
3
4
| - [一、什么是 Markdown?](#一什么是-markdown)
- [二、基础语法](#二基础语法)
- [1. 标题语法](#1-标题语法)
- [2. 段落与换行](#2-段落与换行)
|
总结
本教程涵盖了 Markdown 的核心语法和高级特性,包括:
- 基础语法:标题、段落、强调、列表、链接、图片、引用、代码
- 进阶语法:表格、脚注、任务列表、定义列表、自动链接
- HTML 元素:各种文本格式化标签、特殊元素的使用
- 最佳实践:代码高亮、复杂嵌套、高级表格技巧
掌握这些语法后,你可以:
- 编写结构清晰的文档和笔记
- 创建美观的自述文件和文档
- 在 GitHub、GitLab 等平台上高效协作
- 使用静态站点生成器(如 Hugo、Jekyll)构建博客
记住,Markdown 的核心理念是让写作更专注于内容本身,而不是格式。随着练习,你会发现自己能越来越流畅地使用这些语法。
Happy Markdown Writing! 📝