Markdown 语法教程
一份实用的 Markdown 语法参考——从基础到进阶,覆盖日常开发中最常用的写法,以及不同平台的差异。
一、基础语法
1. 标题
# 一级标题(H1)## 二级标题(H2)### 三级标题(H3)#### 四级标题(H4)##### 五级标题(H5)###### 六级标题(H6)效果:
一级标题
二级标题
三级标题
注意:
#后面必须加空格,否则不会被识别为标题- 建议一篇文章只有一个 H1(文档标题),其余用 H2/H3 组织层级
- H4+ 在大多数主题中视觉差异不大,尽量用 H2/H3 管理层级
2. 段落与换行
这是第一段文字。想要换行,需要在行尾加两个空格,然后回车。或者用一个空行来分隔段落。这是第二段文字。效果:
这是第一段文字。想要换行,需要在行尾加两个空格,然后回车。
或者用一个空行来分隔段落。
这是第二段文字。
最佳实践:段落之间用空行分隔(最直观),行内换行用两个空格(在 Typora 等编辑器中可以直接回车)。
3. 加粗与斜体
*斜体* 或 _斜体_**加粗** 或 __加粗__***加粗斜体*** 或 ___加粗斜体___~~删除线~~效果:
斜体 加粗 加粗斜体 删除线
4. 列表
无序列表:
- 项目一- 项目二 - 子项目(缩进 2 个空格) - 子项目- 项目三有序列表:
1. 第一步2. 第二步3. 第三步嵌套列表:
1. 开发流程 - 需求分析(缩进 2 空格) - 设计评审 1. UI 评审 2. 技术评审 - 编码实现2. 测试流程5. 链接
[显示文字](https://example.com)[带标题的链接](https://example.com "鼠标悬停时显示的文字")[用变量复用链接][site][site]: https://example.com<!-- 后面的引用链接可以在文档底部集中管理 -->6. 图片
{: width="600" height="400" }<!-- {: width=...} 部分编辑器支持,不是标准语法 --><!-- 本地图片用相对路径 -->图片与链接的区别:图片前面多一个 !。
7. 分割线
---<!-- 三个或以上的横线/星号/下划线 -->***___注意:分割线前后最好有空行,否则可能被解析为标题(--- 在两个 # 后会被当作 H2 的另一种写法)。
二、表格
1. 基本表格
| 序号 | 名称 | 说明 ||------|------|------|| 1 | 用户管理 | 管理用户账号与权限 || 2 | 内容管理 | 管理文章与分类 || 3 | 系统设置 | 全局配置参数 |效果:
| 序号 | 名称 | 说明 |
|---|---|---|
| 1 | 用户管理 | 管理用户账号与权限 |
| 2 | 内容管理 | 管理文章与分类 |
| 3 | 系统设置 | 全局配置参数 |
2. 对齐方式
| 左对齐 | 居中对齐 | 右对齐 ||:-------|:--------:|-------:|| 张三 | 98 分 | 北京 || 李四 | 87 分 | 上海 || 王五 | 92 分 | 广州 |效果:
| 左对齐 | 居中对齐 | 右对齐 |
|---|---|---|
| 张三 | 98 分 | 北京 |
| 李四 | 87 分 | 上海 |
| 王五 | 92 分 | 广州 |
3. 表格内换行
标准 Markdown 的表格单元格内不支持直接换行。如果编辑器支持 HTML,可以用 <br>:
| 功能 | 说明 ||------|------|| 登录 | 支持账号密码登录<br>支持微信扫码登录 || 注册 | 仅支持手机号注册 |注意:
<br>在 GitHub、Typora、VS Code 中都能正常工作,但在某些纯文本渲染器(如部分 CLI 工具)中可能显示为纯文本。
4. 表格使用建议
- 表头与内容之间的
---|---分隔线不能省略,否则表格不生效 - 单元格的 | 左右空格不是必须的,但加上更整齐(用编辑器插件自动格式化)
- 表格内不要放太长的文字,必要时拆成多行或用列表代替
三、代码块
1. 行内代码
使用 `console.log()` 方法打印调试信息。变量声明推荐用 `const` 代替 `var`。效果:使用 console.log() 方法打印调试信息。
2. 多行代码块(推荐方式)
```javascriptfunction greet(name) { return `Hello, ${name}!`;}console.log(greet('World'));```效果:
function greet(name) { return `Hello, ${name}!`;}console.log(greet('World'));3. 支持的语法高亮语言
| 语言 | 标识符 |
|---|---|
| JavaScript / TypeScript | js / javascript / ts / typescript |
| HTML / XML | html / xml |
| CSS / SCSS | css / scss |
| Java | java |
| PHP | php |
| Python | python / py |
| SQL | sql |
| Bash / Shell | bash / sh / shell |
| JSON / YAML | json / yaml |
| Diff | diff |
| 无高亮 | text / plain / 不写标识符 |
4. Diff 代码块(展示变更)
```difffunction greet(name) {- return 'Hello, ' + name;+ return `Hello, ${name}!`;}```效果:
function greet(name) {- return 'Hello, ' + name;+ return `Hello, ${name}!`;}5. 代码块内的转义(展示 Markdown 语法本身)
如果你要在代码块中展示 Markdown 语法,需要用更多层的反引号包裹:
````markdown# 这是展示用的标题**这是展示用的加粗**```javascriptconsole.log("嵌套代码块");```````外层用 ```(4 个反引号),内层用 ```(3 个反引号)。
四、引用与分割线
1. 引用块
> 这是一段引用文字。> 可以跨多行,每行前面都加 >。效果:
这是一段引用文字。 可以跨多行,每行前面都加 >。
2. 嵌套引用
> 第一层引用>> > 第二层引用(嵌套)> >> > > 第三层引用>> 回到第一层效果:
第一层引用
第二层引用(嵌套)
第三层引用
回到第一层
3. 引用内带其他元素
> **注意**:引用内可以使用其他 Markdown 语法。>> - 列表项 1> - 列表项 2>> ```javascript> console.log("引用内的代码块");> ```>> > 引用的引用(嵌套)4. 引用使用建议
- 引用适合标注:重点提示、引用来源、警告信息、备注说明
- 引用块前后建议加空行,避免与正文粘连
- 不要用引用块代替正文段落,否则阅读体验不好
五、高级语法
1. 任务列表(Task List)
- [x] 已完成的任务- [ ] 未完成的任务- [ ] 等待中的任务 - [x] 子任务 1 - [ ] 子任务 2效果(GitHub / Typora 支持):
- 已完成的任务
- 未完成的任务
- 等待中的任务
注意:任务列表需要
- [ ]格式(短横 + 空格 + 方括号 + 空格),方括号内的x大小写均可。不是所有编辑器都支持勾选交互。
2. 脚注
这是一段有脚注的文字[^1]。[^1]: 这是脚注内容,会显示在文档底部。效果:这是一段有脚注的文字^1。
注意:脚注在 GitHub 上不支持。在 Typora、VS Code 预览、Obsidian 等工具中可用。
3. 锚点链接(跳转到文档内指定位置)
## 跳转到#三-代码块[点击跳转到代码块章节](#三-代码块)效果:点击跳转到代码块章节
生成规则:
- 取标题文字
- 转小写
- 空格变横线
- - 去掉标点符号
- 中文标题取决于编辑器实现(大多数直接用中文,如
#三-代码块)
4. 折叠详情(Details / Summary)
<details><summary>点击展开查看详情</summary>这里是折叠内容。可以包含 **Markdown** 语法:- 列表- 表格- 代码块```javascriptconsole.log("折叠内的代码");效果:
点击展开查看详情
这里是折叠内容。 可以包含 Markdown 语法:
- 列表
- 表格
- 代码块
console.log("折叠内的代码");注意:
<details>是 HTML 标签,不是标准 Markdown。GitHub、GitLab 支持,部分编辑器(如纯文本 Typora 模式)不支持。
5. HTML 混写
Markdown 本质上是 HTML 的超集,可以直接嵌入 HTML:
<div style="text-align: center; padding: 20px; background: #f5f5f5; border-radius: 8px;"> <h3>居中卡片</h3> <p>这是一段用 HTML 包裹的文字。</p> <p style="color: #2577fd;">主色蓝色</p></div>适用场景:
- 文字居中、分栏布局
- 彩色文字、背景色
- 自定义按钮
- 图片排版
警告:HTML 混写会破坏可移植性——GitHub、编辑器、博客平台渲染效果可能不同。仅在必要的场景下使用。
6. Emoji
GitHub 支持两种写法::smile: :rocket: :warning: :white_check_mark: :x:直接粘贴 emoji:😄 🚀 ⚠️ ✅ ❌效果:😄 🚀 ⚠️ ✅ ❌
:xxx:语法只在 GitHub、GitLab 等特定平台有效。直接粘贴 emoji 字符兼容性最好。
六、扩展语法
1. Mermaid 图表
部分支持 Mermaid 的编辑器(GitHub、GitLab、Obsidian 等)可以直接渲染图表:
流程图:
```mermaidgraph TD A[开始] --> B{是否登录?} B -->|是| C[进入首页] B -->|否| D[跳转登录页] C --> E[选择线路] D --> F[输入账号密码] F --> G{验证通过?} G -->|是| C G -->|否| F```效果(在支持的编辑器中会渲染为图形):
graph TD A[开始] --> B{是否登录?} B -->|是| C[进入首页] B -->|否| D[跳转登录页] C --> E[选择线路] D --> F[输入账号密码] F --> G{验证通过?} G -->|是| C G -->|否| F时序图:
```mermaidsequenceDiagram participant 用户 participant 前端 participant 后端 用户->>前端: 点击登录 前端->>后端: POST /api/login 后端->>后端: 校验账号密码 后端-->>前端: 返回 token 前端-->>用户: 跳转首页```甘特图:
```mermaidgantt title 项目排期 dateFormat YYYY-MM-DD section 需求阶段 需求分析 :done, 2024-01-01, 3d 原型设计 :active, 2024-01-04, 5d section 开发阶段 后端 API :2024-01-09, 10d 前端页面 :2024-01-09, 10d```支持平台:GitHub(2022+)、GitLab、Obsidian、Notion(部分)、Typora(需启用) 不支持:VS Code 原生预览、飞书文档、语雀
2. 数学公式(LaTeX)
```mathE = mc^2```行内公式:$E = mc^2$独立公式:$$f(x) = \int_{-\infty}^{\infty} \hat{f}(\xi) e^{2\pi i \xi x} d\xi$$支持平台:GitHub(部分)、Obsidian(需插件)、Typora(需启用) 不支持:绝大多数博客平台、飞书/语雀
3. 目录(TOC)
部分编辑器支持自动生成目录:
[[_TOC_]] <!-- GitLab 语法 --><!-- 或 -->[TOC] <!-- 部分编辑器支持的写法 -->GitHub 不支持自动 TOC,需要手动写链接锚点:
- [一、基础语法](#一基础语法) - [标题](#1-标题) - [表格](#2-表格)- [二、代码块](#二代码块)七、编辑器与平台差异
不同的 Markdown 编辑器/平台对语法的支持程度不同,这是最常见的"写出来效果不对"的原因。
| 语法特性 | GitHub | Typora | VS Code | 飞书文档 | 语雀 | Obsidian |
|---|---|---|---|---|---|---|
| 基础语法 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 表格 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 代码高亮 | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| Diff 代码块 | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| 任务列表 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 脚注 | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
| 折叠 Details | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ |
Emoji :xxx: |
✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Mermaid | ✅ | ✅ | ❌(需插件) | ✅ | ❌ | ✅(需插件) |
| 数学公式 | ✅(部分) | ✅(需启用) | ❌ | ❌ | ✅ | ✅(需插件) |
| HTML 混写 | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| 自动 TOC | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
实用建议:
- 写 GitHub 文档:只用基础语法 + 表格 + 代码块 + 任务列表 + 折叠(GitHub 都支持)
- 写个人笔记(Typora / Obsidian):可以用脚注、Mermaid、数学公式
- 写飞书/语雀文档:只用基础语法,代码块不要期望有高亮
八、常见误区
误区 1:标题忘记加空格
❌ #标题✅ # 标题没有空格的情况下,大多数解析器不会识别为标题。
误区 2:列表和段落之间没有空行
❌ 这是一段文字。- 列表项 1- 列表项 2✅ 这是一段文字。- 列表项 1- 列表项 2没有空行时,有些解析器会把上一段文字视为列表的一部分。
误区 3:表格的 ---|--- 分隔线不对齐
❌| A | B | C ||---||---|- --|| 1 | 2 | 3 |✅| A | B | C ||---|---|---|| 1 | 2 | 3 |分隔线里的 - 数量至少 3 个,| 的排列要规则,否则表格可能渲染失败。
误区 4:代码块语言标识符写错
❌ ```javascripts❌ ```typescripts✅ ```javascript✅ ```js✅ ```typescript✅ ```ts写错标识符不会导致代码块失效(只是没有高亮),但注意 js 和 javascript 都行,javascripts 不行。
误区 5:中英文符号混用
❌ 【Markdown】**标题** —— 说明 (全角符号)✅ [Markdown]**标题** -- 说明 (半角符号)Markdown 的语法符号(# * - | ` [等)必须使用半角符号。中文全角符号会被当作普通文字。
误区 6:不写空行导致格式混排
❌一段文字| 表头 | 表头 ||------|------|| 内容 | 内容 |另一段文字✅一段文字| 表头 | 表头 ||------|------|| 内容 | 内容 |另一段文字表格、代码块、引用等块级元素,前后必须用空行与正文分隔。
误区 7:代码块内的反引号嵌套错误
如果需要展示代码块语法本身(比如写一篇 Markdown 教程):
❌ 外层写 3 个反引号,里层也写 3 个:```javascript```markdown# 标题✅ 外层写 4 个反引号,里层写 3 个:````markdown```markdown# 标题```---## 九、实用模板### 1. README 模板```markdown# 项目名称> 一句话项目简介## 技术栈- 前端:Vue 3 + Vite + Pinia- 后端:Spring Boot 3.2 + MyBatis-Plus- 数据库:MySQL 8## 快速开始```bash# 克隆项目git clone https://github.com/user/project.git# 安装依赖npm install# 启动开发服务器npm run dev```## 项目结构```src/├── api/ # API 接口├── components/ # 公共组件├── views/ # 页面└── utils/ # 工具函数```## 功能模块- [x] 用户注册登录- [x] 线路浏览搜索- [ ] 预订支付- [ ] 评论系统```### 2. PRD 模板```markdown# PRD:[功能名称]## 版本记录| 版本 | 日期 | 作者 | 变更说明 ||------|------|------|----------|| v1.0 | 2024-xx-xx | 张三 | 初版 |## 背景与目标(为什么做、预期收益)## 用户角色- 普通用户:浏览、预订- 供应商:管理线路- 管理员:审核、配置## 功能需求### 模块 1:[功能名称]**需求描述**:(用户操作路径)**业务规则**:- 规则 1- 规则 2**异常处理**:- 超时场景- 无数据场景## 验收标准- [ ] 功能 A 正常可用- [ ] 边界情况 B 已覆盖- [ ] 性能要求 C 达标```### 3. 周报模板```markdown# 周报:第 X 周(2024-xx-xx ~ 2024-xx-xx)## 本周完成- [x] 登录模块重构- [x] 修复 3 个线上 Bug- [x] 参加产品评审## 进行中- 支付流程联调## 下周计划1. 完成支付功能2. 撰写 API 文档## 风险- 支付接口第三方对接进度未知,已催```### 4. API 文档模板```markdown# API 文档:用户模块## 注册```POST /api/user/register```**请求参数**:| 参数 | 类型 | 必填 | 说明 ||------|------|------|------|| username | string | 是 | 用户名,3-20 字符 || password | string | 是 | 密码,6-20 字符 |**响应示例**:```json{ "code": 200, "message": "success", "data": { "token": "eyJhbGciOiJIUzI1NiJ9...", "userId": 1 }}```**错误码**:| code | message | 说明 ||------|---------|------|| 400 | username already exists | 用户名已存在 || 400 | invalid password format | 密码格式不符 |```---## 十、总结Markdown 的设计理念是"**写的时候像纯文本,渲染出来像富文本**"。掌握它需要记住几件事:1. **语法符号用半角**:`#` `*` `-` `` ` `` `[` 必须是英文符号2. **空行是排版的生命线**:块级元素前后要空行3. **知其边界**:不同平台支持程度不同,跨平台写作只用基础语法4. **所见即所得**:Typora / VS Code 实时预览最方便,纯文本编辑器(Vim / VSCode 纯文本模式)更需要记牢语法> 不必死记所有语法——常用的就那么几个(标题、列表、代码块、表格、加粗斜体),其他查这份教程就行。