--- title: Markdown 语法简明指南 author: 子丶言 date: 2020-09-14 19:06:24 tags: ['Markdown', 'md', '语法指南'] categories: ['教程'] --- Markdown 是一种轻量级标记语言,它以纯文本形式(易读、易写、易更改)编写文档,并最终以 HTML 格式发布。通过简单的标记语法,它可以使普通文本内容具有一定的格式。相比所见即所得(WYSIWYG)编辑器,Markdown 可以让使用者摆脱排版的困扰,专心于写作。当前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。例如:GitHub、简书、掘金等。 ## 标题 1、你可以使用 `=` 和 `-` 语法来展示一级和二级标题 `=` 和 `-` 语法格式如下: ```md 这是一级标题 ================= 这是二级标题 ----------------- ``` 展示效果如下: 这是一级标题 ================= 这是二级标题 ----------------- 2、使用 `#` 号语法 使用 `#` 号可表示 1-6 级标题,一级标题对应一个 `#` 号,二级标题对应两个 `#` 号,以此类推。 ```md # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 ``` 效果如下: # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 ## 段落 段落的前后要有空行,所谓的空行是指没有文字内容。 若想在段内强制换行的方式是**使用两个以上空格加上回车**(引用中换行不需要回车)。 当然也可以在段落后面使用一个空行来表示重新开始一个段落。 ### 空行模式 ```md 这是一个段落。 这是另一个段落。 ``` 效果如下: 这是一个段落。 这是另一个段落。 ### 空格换行模式 ```md 这是一个段落,后面带了两个空格。 这是另一个段落。 ``` 效果如下: 这是一个段落,后面带了两个空格。 这是另一个段落。 ## 字体 ### _斜体_ 你只要给需要倾斜的文字左右分别用一个 `*` 或 `_` 号包起来就可以了。 ```md *斜体文本* _斜体文本_ ``` 效果如下: *斜体文本* _斜体文本_ ### **粗体** 你只要给需要倾斜的文字左右分别用两个 `*` 或 `_` 号包起来就可以了。 ```md **粗体文本** __粗体文本__ ``` 效果如下: **粗体文本** __粗体文本__ ### ___粗斜体___ 你只要给需要倾斜的文字左右分别用三个 `*` 或 `_` 号包起来就可以了。 ```md ***粗斜体文本*** ___粗斜体文本___ ``` 效果如下: ***粗斜体文本*** ___粗斜体文本___ ### ~~删除线~~ 你只要给需要倾斜的文字左右分别用两个 `~` 号包起来就可以了。 ```md ~~这段文本使用了删除线~~ ``` 效果如下: ~~这段文本使用了删除线~~ ### 在文本段内使用 Markdown 的文本格式虽然不多但已经满足绝大部分的写作需求。虽然示例都是一段文本演示一个文本语法,但 Markdown 的文本语法是可以在一段文本内混合。 ```md **月光如流水一般,静静地泻在这一片叶子和花上**。薄薄的青雾浮起在荷塘里。叶子和花*仿佛在牛乳中洗过一样*;又像笼着轻纱的梦。虽然是满月,天上却有一层淡淡的云,所以不能朗照;但我以为这恰是到了好处—— ___酣眠固不可少,小睡也别有风味的___ 。月光是隔了树照过来的,高处丛生的灌木,落下参差的斑驳的黑影,峭楞楞如鬼一般;弯弯的杨柳的稀疏的倩影,却又像是画在荷叶上。塘中的月色并不均匀;但光与影有着和谐的旋律,如~~梵婀玲~~上奏着的名曲。 ``` 效果如下: **月光如流水一般,静静地泻在这一片叶子和花上**。薄薄的青雾浮起在荷塘里。叶子和花*仿佛在牛乳中洗过一样*;又像笼着轻纱的梦。虽然是满月,天上却有一层淡淡的云,所以不能朗照;但我以为这恰是到了好处—— ___酣眠固不可少,小睡也别有风味的___ 。月光是隔了树照过来的,高处丛生的灌木,落下参差的斑驳的黑影,峭楞楞如鬼一般;弯弯的杨柳的稀疏的倩影,却又像是画在荷叶上。塘中的月色并不均匀;但光与影有着和谐的旋律,如~~梵婀玲~~上奏着的名曲。 ## 列表 Markdown 支持有序列表和无序列表。 ### 无序列表 无序列表使用 `*`、`+` 或 `-` 作为列表标记。 **注意**:标记后面最少有一个**空格**或**制表符**。若不在引用区块中,必须和前方段落之间存在空行。 ```md * 星号标记第一项 * 星号标记第二项 * 星号标记第三项 + 加号标记第一项 + 加号标记第二项 + 加号标记第三项 - 减号标记第一项 - 减号标记第二项 - 减号标记第三项 ``` 效果如下: * 星号标记第一项 * 星号标记第二项 * 星号标记第三项 + 加号标记第一项 + 加号标记第二项 + 加号标记第三项 - 减号标记第一项 - 减号标记第二项 - 减号标记第三项 ### 有序列表 有序列表使用数字并加上 `.` 来表示。 **注意**:标记后面最少有一个**空格**或**制表符**。若不在引用区块中,必须和前方段落之间存在空行。 ```md 1. 第一项 2. 第二项 3. 第三项 ``` 效果如下: 1. 第一项 2. 第二项 3. 第三项 ### 列表嵌套 列表嵌套只需在子列表中的选项前面添加**两个以上**空格即可: ```md - 一级无序列表内容 + 二级无序列表内容 + 二级无序列表内容 + 二级无序列表内容 - 一级无序列表内容 1. 二级有序列表内容 2. 二级有序列表内容 3. 二级有序列表内容 1. 一级有序列表内容 * 二级无序列表内容 * 二级无序列表内容 * 二级无序列表内容 2. 一级有序列表内容 1. 二级有序列表内容 2. 二级有序列表内容 3. 二级有序列表内容 ``` 效果如下: - 一级无序列表内容 + 二级无序列表内容 + 二级无序列表内容 + 二级无序列表内容 - 一级无序列表内容 1. 二级有序列表内容 2. 二级有序列表内容 3. 二级有序列表内容 1. 一级有序列表内容 * 二级无序列表内容 * 二级无序列表内容 * 二级无序列表内容 2. 一级有序列表内容 1. 二级有序列表内容 2. 二级有序列表内容 3. 二级有序列表内容 ## 待办事项 待办事项是列表的进阶用法,是在列表的基础上结合未完成 `[ ]` 与已完成 `[x]` 实现。 **注意**:待办事项是一个进阶语法,不同的 Markdown 编辑器对其支持程度不同。 ```md - [x] 吃饭 - [x] 睡觉 - [ ] 打豆豆 ``` 效果如下: - [x] 吃饭 - [x] 睡觉 - [ ] 打豆豆 ### 待办事项嵌套 ```md - [ ] 日常 1. [x] 吃饭 2. [x] 睡觉 3. [ ] 打豆豆 - [ ] 工作 - [ ] Coding - [ ] 摸鱼 - [x] 思考人生 - [x] 思考人生 - [x] 思考人生 - [x] 思考人生 ``` - [ ] 日常 1. [x] 吃饭 2. [x] 睡觉 3. [ ] 打豆豆 - [ ] 工作 - [ ] Coding - [ ] 摸鱼 - [x] 思考人生 - [x] 思考人生 - [x] 思考人生 - [x] 思考人生 ## 区块引用 Markdown 区块引用是在段落开头使用 `>` 符号 ,加上一个**空格**来表示。 ```md > 区块引用 > 其他的引用内容 ``` 效果如下: > 区块引用 > 其他的引用内容 ### 引用嵌套 区块引用是可以嵌套的,你可以加两个 `>>`、三个 `>>>`,甚至 `n` 个 `>`,这有点类似于引用回复的“盖塔”效果,一般情况下用不到这种特性。 ```md > 第一层 >> 第一层嵌套 >>> 第二层嵌套 >>>>>>>>> 第九层~~妖塔~~嵌套 ``` 效果如下: > 第一层 >> 第一层嵌套 >>> 第二层嵌套 >>>>>>>>> 第九层~~妖塔~~嵌套 ### 区块引用中使用其他标记 区块引用中可以混用其他的 Markdown 标记。 ```md > 区块引用中使用其他的 **Markdown** 标记 > 1. **第一项** > 2. ___第二项___ > + _第一项_ > + ~~第二项~~ ``` 效果如下: > 区块引用中使用其他的 **Markdown** 标记 > 1. **第一项** > 2. ___第二项___ > + _第一项_ > + ~~第二项~~ ## 分割线 Markdown 中的分割线使用**三个以上**的 `-` 或 `*` 表示。 **注意**:`-` 或 `*` 的多少并不影响分割线的样式。 ```md -------- **** ``` 效果如下: -------- **** ## 链接 Markdown 的链接主要有两种形式:行内式和参考式。 ### 行内式 行内式主要是以下两种写法,其中链接描述是可选的。 [链接名称](链接地址 "可选标题") <链接地址 "可选标题"> 实例如下: ```md [梦翼坊](https://xiangfa.org "点击访问梦翼坊") 这是一个网址 ``` 效果如下: [梦翼坊](https://xiangfa.org "点击访问梦翼坊") 这是一个网址 ### 参考式 当一篇文章中多次涉及到相同的网址链接时,如果每处都使用完整的长链接,会使文章变得”臃肿“,甚至导致难以阅读。 此外,当你后期需要修改链接时,你需要找到页面内所有需要修改的链接并一一调整。 为了解决这类问题,你可以考虑使用参考式链接。 [链接名称][引用变量] 实例如下: ```md 这篇使用指南在编写过程中参考了很多文章,比如[Github][github]、[菜鸟教程][1]以及[简书][2]。 [github]: https://github.com/younghz/Markdown [1]: https://www.runoob.com/markdown/md-tutorial.html [2]: https://www.jianshu.com/p/191d1e21f7ed ``` 效果如下: 这篇使用指南在编写过程中参考了很多文章,比如[Github][github]、[菜鸟教程][1]以及[简书][2]。 [github]: https://github.com/younghz/Markdown [1]: https://www.runoob.com/markdown/md-tutorial.html [2]: https://www.jianshu.com/p/191d1e21f7ed ## 图片 图片的使用方式跟链接很相似,或者说是在链接语法前多加了一个 `!`,具体语法如下: ![alt 属性文本](图片地址 "可选标题") 具体实例如下: ```md ![梦翼坊 Logo](https://xiangfa.org/images/logo.svg "这是梦翼坊的 Logo") ``` 效果如下: ![梦翼坊 Logo](https://xiangfa.org/images/logo.svg "这是梦翼坊的 Logo") 当然,你也可以像链接那样对图片网址使用变量。 ```md 这是梦翼坊的 Logo:![梦翼坊 Logo][logo] [logo]: https://xiangfa.org/images/logo.svg ``` 效果如下: 这是梦翼坊的 Logo:![梦翼坊 Logo][logo] [logo]: https://xiangfa.org/images/logo.svg ## 表格 Markdown 制作表格使用 `|` 来分隔不同的单元格,使用**一个以上** `-` 来分隔表头和其他行。 ```md | 表头 | 表头 | | ---- | ---- | | 单元格 | 单元格 | | 单元格 | 单元格 | ``` 效果如下: | 表头 | 表头 | | ---- | ---- | | 单元格 | 单元格 | | 单元格 | 单元格 | 我们可以通过 `-` 与 `:` 的组合设置表格的对齐方式: - `-:` 设置内容和标题栏居右对齐 - `:-` 设置内容和标题栏居左对齐 - `:-:` 设置内容和标题栏居中对齐 **注意**:`-` 的个数不会影响显示效果。 实例如下: ```md | 左对齐 | 居中对齐 | 右对齐 | | :-----| :----: | ----: | | 单元格 | 单元格 | 单元格 | | 单元格 | 单元格 | 单元格 | ``` 效果如下: | 左对齐 | 居中对齐 | 右对齐 | | :-----| :----: | ----: | | 单元格 | 单元格 | 单元格 | | 单元格 | 单元格 | 单元格 | ## 代码 代码可以分为行内区块、代码区块以及代码片段三种形式。 ### 行内区块 如果是段落上的一个函数或片段的代码可以用反引号(`)把它包起来,比如: ```md 在网页上可以使用 `alert('Hello World')` 函数进行页面提示 ``` 效果如下: 在网页上可以使用 `alert('Hello World')` 函数进行页面提示 ### 代码区块 代码区块使用四个空格或者一个制表符(Tab 键)来表示。 ```md function say(text) { alert(text) } say('Hello World') ``` 效果如下: function say(text) { alert(text) } say('Hello World') ### 代码片段 目前很多 Markdown 编辑器都支持代码高亮,但常规的代码区块方式无法明确代码语言导致无法精确的代码高亮,因此代码片段的方式更适合用于代码高亮。代码片段的语法格式如下: ```语言类型 这里是具体的代码片段 ``` 实例如下: ```JavaScript function say(text) { alert(text) } say('Hello World') ``` 效果如下: ```JavaScript function say(text) { alert(text) } say('Hello World') ``` ## 高级技巧 ### 支持混合使用 HTML 标签 本文一开始就提到 Markdown 最终以 HTML 格式发布,因此你完全可以在 Markdown 里直接混用标准的 HTML 标签。 ```md 在 Windows 操作系统中,你可以使用 Ctrl+Alt+Del 重启电脑 ``` 效果如下: 在 Windows 操作系统中,你可以使用 Ctrl+Alt+Del 重启电脑 ### 转义 Markdown 使用了很多特殊符号来表示特定的意义,如果需要显示特定的符号则需要使用转义字符,Markdown 使用反斜杠转义特殊字符: ```md **文本加粗** \*\* 正常显示星号 \*\* ``` 效果如下: **文本加粗** \*\* 正常显示星号 \*\* Markdown 支持以下这些符号前面加上反斜杠来帮助插入普通的符号: \ 反斜线 ` 反引号 * 星号 _ 下划线 {} 花括号 [] 方括号 () 小括号 # 井字号 + 加号 - 减号 . 英文句点 ! 感叹号 ### 其他 不同的 Markdown 编辑器对 Markdown 的语法支持程度也不同,部分 Markdown 编辑器通过插件的方式可以支持**公式**、**流程图**、**时序图**、**甘特图**等进阶语法。这些语法并不属于 Markdown 的基础语法,因此这里也不再展开叙述,你可以根据实际情况选择性的学习。 ## 文章源码 本文介绍了 Markdown 的基础用法,当然你看到的这篇文章也完全是用 Markdown 编写,你可以在[这里](https://raw.githubusercontent.com/Amery2010/xiangfa.org/master/source/_posts/markdown-grammar-guide.md) 查看当前文章的 Markdown 源码。 ## 参考 - [Markdown 教程](https://www.runoob.com/markdown/md-tutorial.html) - [Markdown基本语法](https://www.jianshu.com/p/191d1e21f7ed) - [Markdown 基本语法](https://github.com/younghz/Markdown)