Markdown完全指南

从入门到精通,全面掌握Markdown的核心概念和语法规则,高效创建格式化文本

基础语法

Markdown是一种轻量级标记语言,用简洁的语法格式生成结构化文档。以下是Markdown的基本概念和核心语法。

什么是Markdown?

Markdown是由John Gruber在2004年创建的标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的HTML文档。

Markdown的特点:

  • 纯文本格式,不依赖特定软件
  • 语法简单,学习成本低
  • 可转换为多种格式(HTML、PDF、Word等)
  • 广泛应用于文档写作、博客、README文件等

为什么使用Markdown?

Markdown已经成为互联网上最流行的写作格式之一,尤其适合需要频繁编写文档的场景。

专注内容

无需关注格式细节,专注于文字创作

代码友好

特别适合程序员记录笔记和编写文档

跨平台兼容

在任何设备上都能轻松查看和编辑

永久保存

纯文本格式,不会因软件升级而失效

Markdown工具推荐

Visual Studio Code

强大的编辑器,支持Markdown预览和语法高亮

Typora

所见即所得的Markdown编辑器

Obsidian

功能丰富的笔记应用,支持Markdown和双向链接

标题

Markdown使用#符号表示标题,从一级标题到六级标题,分别使用1-6个#符号。

Markdown语法

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

渲染效果

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

Atx样式标题

上面的示例使用的是Atx样式标题,这是最常用的Markdown标题语法。

# 一级标题
## 二级标题

Setext样式标题

Setext样式标题使用等号(=)表示一级标题,减号(-)表示二级标题。

一级标题
=======

二级标题
-------

标题使用技巧

  • #符号后需要加空格,否则可能不被识别为标题
  • 建议从二级标题开始使用,一级标题通常用于文档标题
  • 避免在同一文档中使用过多级别的标题,通常3-4级足够

文本格式

Markdown提供了丰富的文本格式化选项,包括粗体、斜体、删除线等。

基本文本格式

粗体

**这是粗体文本**
__这也是粗体文本__

这是粗体文本

这也是粗体文本

斜体

*这是斜体文本*
_这也是斜体文本_

这是斜体文本

这也是斜体文本

粗斜体

***这是粗斜体文本***
___这也是粗斜体文本___

这是粗斜体文本

这也是粗斜体文本

删除线

~~这是删除线文本~~

这是删除线文本

其他文本格式

下划线

Markdown本身不直接支持下划线,但可以使用HTML标签。

<u>这是下划线文本</u>

这是下划线文本

高亮

部分Markdown解析器支持使用==进行文本高亮。

==这是高亮文本==

这是高亮文本

上标和下标

使用HTML标签实现上标和下标。

H<sub>2</sub>O
E=mc<sup>2</sup>

H2O

E=mc2

文本格式使用技巧

  • 优先使用**和*表示粗体和斜体,因为它们更常见且易于输入
  • 如果需要在文本中使用实际的星号或下划线,可以在前面加反斜杠进行转义
  • 复杂的格式建议使用HTML标签,Markdown支持直接嵌入HTML

列表

Markdown支持有序列表、无序列表和嵌套列表,让你可以轻松组织信息。

无序列表

使用星号(*)、加号(+)或减号(-)开头,后面加空格。

语法

* 项目一
+ 项目二
- 项目三

渲染效果

  • 项目一
  • 项目二
  • 项目三

有序列表

使用数字加句点(.)开头,后面加空格。数字顺序不影响渲染结果。

语法

1. 第一步
3. 第二步(数字顺序不影响)
2. 第三步

渲染效果

  1. 第一步
  2. 第二步(数字顺序不影响)
  3. 第三步

嵌套列表

通过缩进创建嵌套列表,通常使用2-4个空格或1个Tab。

语法

1. 主项目1
   - 子项目A
   - 子项目B
2. 主项目2
   1. 子项目1
   2. 子项目2

渲染效果

  1. 主项目1
    • 子项目A
    • 子项目B
  2. 主项目2
    1. 子项目1
    2. 子项目2

列表使用技巧

  • 无序列表建议统一使用一种符号,保持一致性
  • 嵌套列表的缩进要保持一致,否则可能导致解析错误
  • 列表项之间可以包含多个段落,但每个段落必须缩进相同的空格数

代码

Markdown提供了简单的语法来格式化代码,无论是单行代码还是代码块。

行内代码

使用反引号(`)包裹行内代码。