Markdown 完全指南:从入门到精通

一、Markdown 是什么?

Markdown 是一种轻量级标记语言,由约翰·格鲁伯(John Gruber)和亚伦·斯沃茨(Aaron Swartz)于 2004 年共同创建。它的设计目标是让用户能够使用易读易写的纯文本格式编写文档,然后转换成结构化的 HTML 页面。

1.1 Markdown 的核心优势

简洁性:Markdown 的语法极其简单,学习成本低,几分钟就能掌握基本用法。相比 HTML 的复杂标签,Markdown 使用直观的符号(如 #*>)来标记文本格式。

可读性:Markdown 文档本身就是易读的纯文本,即使不经过渲染也能清晰理解内容结构。这使得它在版本控制系统中表现优异,因为代码差异对比非常直观。

跨平台兼容:Markdown 文件可以在任何文本编辑器中打开和编辑,支持 Windows、macOS、Linux 等所有主流操作系统。

多用途:从技术文档、博客文章到学术论文、演示文稿,Markdown 都能胜任。GitHub、GitLab、Stack Overflow 等平台都原生支持 Markdown。

1.2 Markdown 的应用场景

技术文档:项目 README、API 文档、代码注释等。GitHub 的 README.md 文件就是使用 Markdown 编写的。

博客写作:许多静态网站生成器(如 Hexo、Hugo、Jekyll)都支持 Markdown,可以直接将 Markdown 文件转换为静态网页。

学术写作:结合 Pandoc 工具,可以将 Markdown 转换为 PDF、Word、LaTeX 等多种格式。

笔记管理:Obsidian、Notion、Typora 等笔记应用都采用 Markdown 作为核心编辑格式。

邮件撰写:部分邮件客户端支持 Markdown,可以编写格式化的邮件内容。

二、基础语法

2.1 标题

Markdown 支持六级标题,使用 #符号表示:

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

最佳实践

  • #后加一个空格
  • 建议使用 # 标题而不是 #标题
  • 避免跳过标题层级(如从二级直接到四级)

2.2 段落与换行

段落:使用一个或多个空行分隔段落。

这是第一个段落。

这是第二个段落。

换行:在行尾添加两个空格或使用反斜杠 “。

这是第一行。  
这是第二行。

这是第一行。\
这是第二行。

2.3 强调

粗体:使用两个星号 **或两个下划线 __

**粗体文本**
__粗体文本__

斜体:使用一个星号 *或一个下划线 _

*斜体文本*
_斜体文本_

粗斜体:使用三个星号 ***或三个下划线 ___

***粗斜体文本***
___粗斜体文本___

删除线:使用两个波浪号 ~~

~~删除线文本~~

2.4 列表

无序列表:使用 -+*

- 项目一
- 项目二
  - 子项目一
  - 子项目二
- 项目三

有序列表:使用数字加英文句点

1. 第一项
2. 第二项
   1. 子项一
   2. 子项二
3. 第三项

任务列表:使用 - [ ]- [x]

- [ ] 未完成任务
- [x] 已完成任务

2.5 引用

使用 >符号表示引用:

> 这是一个引用块。
>
> 引用可以包含多个段落。
>
> > 嵌套引用也是支持的。

2.6 代码

行内代码:使用反引号 `

使用 `console.log()` 输出信息。

代码块:使用三个反引号 ```或缩进四个空格

```javascript
function hello() {
  console.log('Hello, Markdown!');
}
```

语法高亮:在代码块后指定语言名称

```python
def hello():
    print("Hello, Markdown!")
```

2.7 水平分割线

使用三个或更多的星号 ***、破折号 ---或下划线 ___

***
---
___

2.8 链接

行内链接[链接文本](链接地址 "标题")

[Google](https://www.google.com "Google 搜索")

参考式链接

[Google][1]

[1]: https://www.google.com "Google 搜索"

自动链接:使用尖括号

<https://www.google.com>
<email@example.com>

2.9 图片

行内图片![替代文本](图片地址 "标题")

![Markdown Logo](https://example.com/logo.png "Markdown Logo")

参考式图片

![Markdown Logo][logo]

[logo]: https://example.com/logo.png "Markdown Logo"

2.10 转义字符

使用反斜杠 “转义特殊字符:

\* 这不是斜体 \*
\# 这不是标题

三、扩展语法

3.1 表格

使用竖线 |和连字符 -创建表格:

| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 内容1 | 内容2 | 内容3 |
| 内容4 | 内容5 | 内容6 |

对齐方式

| 左对齐 | 居中对齐 | 右对齐 |
|:------|:-------:|------:|
| 内容1 | 内容2 | 内容3 |

3.2 脚注

使用 [^标识符]添加脚注:

这是一个带有脚注的句子。

: 这是脚注的内容。

3.3 定义列表

部分 Markdown 解析器支持定义列表:

术语1
: 定义1

术语2
: 定义2

3.4 删除线

~~删除的文本~~

3.5 任务列表

- [x] 已完成任务
- [ ] 未完成任务

3.6 表情符号

:smile: :heart: :rocket:

3.7 高亮文本

==高亮文本==

3.8 下标和上标

H~2~O
X^2^

3.9 自动链接

https://example.com

四、HTML 支持

Markdown 支持内嵌 HTML 代码,当 Markdown 语法无法满足需求时,可以直接使用 HTML:

<details>
<summary>点击展开</summary>

这里是详细内容。

</details>

常用 HTML 标签

  • <br>:强制换行
  • <hr>:水平分割线
  • <div>:块级容器
  • <span>:行内容器
  • <kbd>:键盘输入
  • <mark>:高亮文本
  • <sup>:上标
  • <sub>:下标

五、数学公式

5.1 行内公式

使用 $包裹公式:

行内公式:$E = mc^2$

5.2 块级公式

使用 `$$

` 包裹公式:

$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$

5.3 常用数学符号

\alpha \beta \gamma \delta \epsilon \zeta \eta \theta \iota \kappa \lambda \mu \nu \xi \pi \rho \sigma \tau \upsilon \phi \chi \psi \omega

\sum_{i=1}^{n} i = \frac{n(n+1)}{2}

\prod_{i=1}^{n} i = n!

\lim_{x \to 0} \frac{\sin x}{x} = 1

\frac{a}{b} \times \frac{c}{d} = \frac{ac}{bd}

\sqrt[3]{x^3 + y^3}

六、流程图与图表

6.1 Mermaid 流程图

mermaid

graph TD

A[开始] –> B{判断}

B –>|是| C[执行操作]

B –>|否| D[结束]

C –> D

6.2 Mermaid 序列图

mermaid

sequenceDiagram

participant A as 用户

participant B as 服务器

A->>B: 发送请求

B->>A: 返回响应

6.3 Mermaid 甘特图

mermaid

gantt

title 项目计划

dateFormat YYYY-MM-DD

section 阶段一

任务一 :a1, 2025-01-01, 30d

任务二 :after a1, 20d

section 阶段二

任务三 :2025-02-01, 12d

任务四 :24d

6.4 PlantUML 类图

plantuml

@startuml

class User {

-id: int

-name: string

+login(): void

}

class Order {

-id: int

-userId: int

+create(): void

}

User “1” — “*” Order

@enduml

七、YAML Front Matter

YAML Front Matter 用于在 Markdown 文件头部添加元数据:

---
title: "文章标题"
date: 2025-01-01
tags:
  - Markdown
  - 教程
categories: 技术
draft: false
---

常用字段

  • title:文章标题
  • date:发布日期
  • tags:标签列表
  • categories:分类
  • draft:是否为草稿
  • description:描述
  • author:作者

八、工具与编辑器

8.1 桌面编辑器

Typora:所见即所得的 Markdown 编辑器,支持实时预览。

Visual Studio Code:强大的代码编辑器,通过扩展支持 Markdown 预览和编辑。

Obsidian:基于 Markdown 的知识管理工具,支持双向链接。

Notion:支持 Markdown 的在线笔记应用。

8.2 在线编辑器

StackEdit:功能丰富的在线 Markdown 编辑器。

Dillinger:简洁的在线 Markdown 编辑器。

Markdown Here:浏览器扩展,可以在邮件和网页中渲染 Markdown。

8.3 命令行工具

Pandoc:文档转换工具,支持 Markdown 到多种格式的转换。

# 转换为 PDF
pandoc input.md -o output.pdf

# 转换为 Word
pandoc input.md -o output.docx

# 转换为 HTML
pandoc input.md -o output.html

Markdownlint:Markdown 语法检查工具。

# 安装
npm install -g markdownlint-cli

# 检查文件
markdownlint README.md

九、最佳实践

9.1 文件命名规范

  • 使用小写字母和连字符 -
  • 避免使用空格和特殊字符
  • 使用有意义的文件名
# 推荐
getting-started-with-markdown.md

# 不推荐
Getting Started With Markdown.md
getting_started_with_markdown.md

9.2 代码块规范

  • 为代码块指定语言
  • 保持代码块简洁
  • 添加必要的注释
```javascript
// 计算阶乘
function factorial(n) {
  if (n <= 1) return 1;
  return n * factorial(n - 1);
}
```

9.3 链接管理

  • 使用参考式链接管理长链接
  • 保持链接列表在文件底部
[Google][google]
[GitHub][github]

[google]: https://www.google.com
[github]: https://github.com

9.4 图片优化

  • 使用图床服务存储图片
  • 为图片添加替代文本
  • 压缩图片以减少文件大小

9.5 文档结构

  • 使用清晰的标题层级
  • 保持段落简短
  • 使用列表和表格组织内容

十、常见问题与解决方案

10.1 兼容性问题

问题:不同平台的 Markdown 解析器支持不同的扩展语法。

解决方案

  • 使用标准 Markdown 语法
  • 避免使用特定平台的扩展语法
  • 在文档中说明兼容性要求

10.2 中文排版

问题:中英文混排时的空格问题。

解决方案

  • 中英文之间添加空格
  • 使用全角标点符号
# 推荐
Markdown 是一种轻量级标记语言。

# 不推荐
Markdown是一种轻量级标记语言。

10.3 表格对齐

问题:表格内容过长导致对齐混乱。

解决方案

  • 使用 HTML 表格
  • 将长内容拆分为多行
  • 使用 <br>标签换行

10.4 代码块嵌套

问题:在代码块中嵌套 Markdown 代码。

解决方案

  • 使用更多的反引号包裹
  • 使用 HTML 实体转义

markdown

console.log('Hello');

10.5 特殊字符转义

问题:特殊字符被错误解析。

解决方案

  • 使用反斜杠转义
  • 使用 HTML 实体
\* 这不是斜体 \*
&lt;div&gt; 这不是 HTML 标签 &lt;/div&gt;

十一、进阶技巧

11.1 自定义 CSS

在 Markdown 中内嵌 CSS:

<style>
.custom-style {
  color: red;
  font-weight: bold;
}
</style>

<span class="custom-style">自定义样式文本</span>

11.2 锚点链接

创建页面内跳转链接:

[跳转到标题](#标题)

## 标题

11.3 折叠内容

使用 HTML 的 <details>标签:

<details>
<summary>点击展开</summary>

这里是详细内容。

</details>

11.4 注释

使用 HTML 注释:

<!-- 这是注释,不会显示 -->

11.5 变量替换

部分工具支持变量替换:

{{ title }}
{{ date }}

十二、总结

Markdown 作为一种轻量级标记语言,凭借其简洁、易读、跨平台的特性,已经成为技术文档、博客写作、笔记管理等场景的首选格式。通过掌握基础语法和扩展功能,结合合适的工具链,可以大幅提升文档编写效率。

核心要点回顾

  • 标题使用 #符号,从一级到六级
  • 段落用空行分隔,换行用两个空格
  • 强调使用 ***,列表使用 -1.
  • 代码块用三个反引号,链接用 []()
  • 表格、数学公式、流程图等扩展语法需要特定工具支持
  • 使用 YAML Front Matter 添加元数据
  • 遵循最佳实践,保持文档可读性和可维护性

学习建议

  1. 从基础语法开始,逐步掌握扩展功能
  2. 选择适合自己的编辑器,提高编写效率
  3. 在实际项目中应用,不断积累经验
  4. 关注 Markdown 生态发展,学习新工具和技巧

Markdown 不仅仅是一种标记语言,更是一种思维方式。它鼓励我们专注于内容本身,而不是格式排版。通过 Markdown,我们可以更高效地表达思想,更清晰地组织信息,更便捷地分享知识。

版权声明:本文为JienDa博主的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
若内容若侵犯到您的权益,请发送邮件至:platform_service@jienda.com我们将第一时间处理!
所有资源仅限于参考和学习,版权归JienDa作者所有,更多请访问JienDa首页。

给TA赞助
共{{data.count}}人
人已赞助
阅读

DeepSeek 2025 全景报告:从技术巅峰到产业革命

2025-12-19 15:43:24

阅读

2026年经济触底回升,程序员春天要来了,备战春招Java面试题分享!

2025-12-19 16:42:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索