前置知识: Markdown

Markdown 列表语法

00:00
4 min Intermediate 2026/4/6

有序列表、无序列表、任务列表与嵌套规则。

1. 无序列表 (Unordered Lists)

1.1 语法

使用 -*+ 加空格开头,三者效果完全一致,推荐统一使用 - 以保持一致性。

-
-
-

1.2 渲染效果

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3

1.3 高级用法

1.3.1 列表项换行

如果列表项内容较长,需要换行时,第二行及以后的内容需要与第一行文本对齐,而不是与标记符对齐:

- 换行后需要与第一行文本对齐,
  而不是与标记符对齐
-

渲染效果:

  • 这是一个很长的列表项, 换行后需要与第一行文本对齐, 而不是与标记符对齐
  • 另一个列表项

1.3.2 列表项中的空行

列表项之间可以添加空行,提高可读性:

-
-
-

渲染效果:

  • 列表项 1
  • 列表项 2
  • 列表项 3

2. 有序列表 (Ordered Lists)

2.1 语法

使用 数字 + 英文句号 + 空格 开头,数字顺序不影响最终渲染结果,推荐按顺序书写以保持代码的可读性。

1.  有序列表项 1
2.  有序列表项 2
3.  有序列表项 3

2.2 渲染效果

  1. 有序列表项 1
  2. 有序列表项 2
  3. 有序列表项 3

2.3 高级用法

2.3.1 序号自动调整

即使使用非连续的数字,渲染时也会自动调整为连续序号:

1.  第一项
2.  第二项(使用了数字 3)
3.  第三项(使用了数字 2)

渲染效果:

  1. 第一项
  2. 第二项(使用了数字 3)
  3. 第三项(使用了数字 2)

2.3.2 多级有序列表

多级有序列表的序号会自动递增:

1. 一级列表项
1. 二级列表项
1. 三级列表项
1. 另一个二级列表项
1. 另一个一级列表项

渲染效果:

  1. 一级列表项
  2. 二级列表项
  3. 三级列表项
  4. 另一个二级列表项
  5. 另一个一级列表项

3. 任务列表 (Task Lists)

3.1 语法

待办清单专用语法(GFM 扩展),[ ] 表示未完成,[x] 表示已完成,符号后必须加空格。

-
-
-

- [x] 子任务 1
- [ ] 子任务 2

3.2 渲染效果

  • 未完成的待办任务
  • 已完成的待办任务
  • 可嵌套待办
  • 子任务 1
  • 子任务 2

3.3 高级用法

3.3.1 任务列表与描述

可以在任务列表项后添加描述文本:

- 详细描述:需要包含项目背景、目标、计划和预算
- 详细描述:讨论项目进度和下一步计划

渲染效果:

  • 完成项目提案 详细描述:需要包含项目背景、目标、计划和预算
  • 召开团队会议 详细描述:讨论项目进度和下一步计划

4. 嵌套列表 (Nested Lists)

4.1 语法

嵌套列表需要使用4 个空格或 1 个制表符进行缩进。

4.1.1 无序列表嵌套

-

- 二级无序列表项
- ## 三级无序列表项

4.1.2 有序列表嵌套

1. 一级有序列表项
1. 二级有序列表项
1. 三级有序列表项
1. 另一个一级有序列表项

4.1.3 混合嵌套

-

1. 有序列表项

- 无序列表项

1. 有序列表项

4.2 渲染效果

  • 一级无序列表项
  • 二级无序列表项
  • 三级无序列表项
  • 另一个一级无序列表项
  1. 一级有序列表项
  2. 二级有序列表项
  3. 三级有序列表项
  4. 另一个一级有序列表项
  • 无序列表项
  1. 有序列表项
  • 无序列表项
  1. 有序列表项

4.3 嵌套列表的最佳实践

  • 控制嵌套层级:一般不超过 3 层,过深的嵌套会降低可读性
  • 保持缩进一致:使用统一的缩进方式(4 个空格或 1 个制表符)
  • 添加空行:在不同层级的列表之间添加空行,提高可读性
  • 使用不同类型:根据内容需要选择合适的列表类型进行嵌套

5. 列表与其他元素的结合

5.1 列表中使用代码块

-

```python
print("Hello, World!")
```
console.log('Hello, World!');

渲染效果:
- 列表项 1
```python
 print("Hello, World!")
  • 列表项 2
console.log('Hello, World!');

5.2 列表中使用引用

-

> 这是一个引用
> 可以跨越多行
> True- 列表项 2
> 另一个引用

渲染效果:

  • 列表项 1

    这是一个引用 可以跨越多行

  • 列表项 2

    另一个引用

5.3 列表中使用图片和链接

-
-

渲染效果:

6. 不同 Markdown 解析器的兼容性

不同的 Markdown 解析器对列表语法的支持可能略有差异:

解析器无序列表有序列表任务列表嵌套列表
GitHub Flavored Markdown支持支持支持支持
CommonMark支持支持不支持支持
Markdown.pl支持支持不支持支持
MultiMarkdown支持支持不支持支持
注意:任务列表是 GitHub Flavored Markdown (GFM) 的扩展特性,在其他解析器中可能不被支持。

7. 常见问题与解决方案

7.1 列表项不显示

问题描述:列表项不显示为列表,显示为普通文本。 原因分析:标记符后缺少空格。 解决方案:在标记符后添加一个空格,如 - 列表项1. 列表项

7.2 嵌套列表显示异常

问题描述:嵌套列表显示为一级列表,没有正确缩进。 原因分析:嵌套列表的缩进不正确。 解决方案:使用 4 个空格或 1 个制表符进行缩进。

7.3 任务列表不生效

问题描述:任务列表显示为普通无序列表,没有复选框。 原因分析:使用了不支持 GFM 扩展的 Markdown 解析器。 解决方案:使用支持 GFM 扩展的 Markdown 解析器,如 GitHub、VSCode 等。

7.4 列表项换行后对齐问题

问题描述:列表项换行后文本没有正确对齐。 原因分析:换行后的文本没有与第一行文本对齐。 解决方案:确保换行后的文本与第一行文本的起始位置对齐,而不是与列表标记符对齐。

8. 总结与最佳实践

8.1 核心概念

  • 无序列表:使用 -*+ 加空格开头
  • 有序列表:使用 数字 + 英文句号 + 空格 开头
  • 任务列表:使用 [ ][x] 加空格开头(GFM 扩展)
  • 嵌套列表:使用 4 个空格或 1 个制表符进行缩进

8.2 最佳实践

  1. 列表使用
  • 无序列表:用于不需要特定顺序的项目
  • 有序列表:用于需要特定顺序的项目
  • 任务列表:用于待办事项或任务跟踪
  1. 格式规范
  • 统一使用一种无序列表标记符,推荐使用 -
  • 保持列表项的缩进一致
  • 列表项之间可以添加空行,提高可读性
  • 长列表项换行时,确保文本对齐
  1. 嵌套列表
  • 避免过深的嵌套,一般不超过 3 层
  • 确保缩进正确,使用 4 个空格或 1 个制表符
  • 在不同层级之间添加空,提高可读性
  1. 兼容性考虑
  • 任务列表仅在支持 GFM解析器中生效
  • 避免使用过于复杂的嵌套结构,以确保在不同解析器中都能正确显示
  1. 其他元素结合
  • 合理使用列表代码块引用图片链接的结合
  • 确保这些元素的缩进正确,以保持列表结构的完整性

8.3 个人实践总结

  • 选择合适的列表类型,内容的性质和顺序要求
  • 保持列表格式的一致性和缩进的正确性
  • 合理使用嵌套列表,提内容的层次感
  • 注意标记符后必须加空,确保列表语法生效
  • 考虑不同 Markdown 解析器的兼容性,尤其是任务列表扩展特性
  • 结合其他 Markdown 元素时,注意保持正确的缩进和

更新日志 (Changelog)

  • 2026-04-06: 初版,涵盖无序列表有序列表任务列表嵌套列表及最佳实践
  • 2026-05-03: 更新至 v3.5.0 式,移除 HTML 锚点和 emoji,统一标题层级

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式