Markdown简洁高效的文本标记语言,技术人的写作利器之基础语法介绍

大家好!今天我们来聊聊每个程序员和技术写作者都应该掌握的一项技能——Markdown。

在当今信息爆炸的时代,我们每天都要接触和处理大量的文本信息。无论是撰写文档、博客文章,还是在论坛上发表观点,一个高效的文本编辑方式至关重要。Markdown
这种轻量级标记语言应运而生,以其独特优势赢得众多用户青睐!

「Markdown」一种用符号代替排版的写作方式,通过简单符号就能实现:

  • ✨ 美观的文档格式
  • 📱 多平台兼容显示
  • ⚡ 比 Word 快 3 倍的写作速度

第一部分: 简介

(一)Markdown是啥玩意儿?

Markdown就是一种轻量级的标记语言,让你能够使用一种易读易写的纯文本格式进行写作,然后将其转换为结构有效的HTML(或者其他格式)。

发明这玩意儿的是John Gruber大神,目的就是让写作者专注于内容本身,而不是纠结于格式化。

个人觉得,这玩意儿简直就是为咱们程序员量身定做的写作工具。

(二)为什么要用Markdown?Word它不香吗?

估计不少人跟我当初一样,觉得Word、WPS这些富文本编辑器挺好的,为啥要折腾Markdown呢?

直到某天,我在写技术文档的时候,光是调个格式就花了半小时,一会儿字体不对,一会儿缩进有问题,特别是代码的展示那叫一个惨不忍睹!

这时候才意识到,Markdown这玩意儿真不是可有可无的玩具,而是实打实的生产力工具:

不过就像"可乐和雪碧哪个好喝"一样,没有标准答案,只有个人偏好,请根据个人实际需求来选择。

没有完美的工具,只有合适的工具!

Markdown 优点

  • 简单易学:语法简单到哭,几分钟就能上手
  • 专注写作:不用被复杂的格式化功能打断思路
  • 跨平台兼容:几乎所有写作平台都支持Markdown
  • 版本控制友好:纯文本格式,Git管理起来很舒服
  • 可扩展性强:各种编辑器和插件让你如虎添翼

Markdown 缺点

  • 功能相对简单:复杂排版需求可能满足不了
  • 学习曲线:对于非技术人员可能需要适应期
  • 标准不统一:不同平台可能支持的语法略有差异

Markdown与富文本的对比:

对比维度 Markdown 富文本(如 Word、Google Docs)
编辑方式 使用纯文本 + 简单符号(如 # 表示标题) 使用按钮点击进行格式设置(如加粗、字体大小)
文件格式 .md 纯文本文件,轻量简洁 .docx.xlsx 等,包含复杂格式信息
格式控制 通过符号定义结构和格式 所见即所得,直接调整字体、颜色、排版等
跨平台兼容性 极高,可在任意编辑器中打开 依赖特定软件,不同平台打开可能格式错乱
导出与转换 可轻松转换为 HTML、PDF、Word 等格式 支持导出多种格式,但格式依赖编辑器支持
图像与多媒体 支持插入图片,但无法调整大小、对齐等高级操作 支持插入图片、视频、表格、图表等,并可精细排版
协作与版本控制 与 Git 等版本控制系统天然兼容,易于多人协作 协作功能依赖特定平台(如 Google Docs),合并修改较复杂
学习成本 需要学习基础语法,适合喜欢高效写作的人 无需学习,直观易用,适合普通用户
适用场景 技术文档、博客、笔记、网页内容等 报告、简历、宣传材料、合同等需要精美排版的文档

第二部分: 工作原理

Markdown是一种纯文本标记语言,它允许你使用简单的符号来格式化文本,从而生成HTML文档。
Markdown工作原理

  1. 创建 .md 文件
  2. 使用Markdown 应用程序(插件、APP、在线编辑器等)打开
  3. 使用 Markdown 应用程序将文件转换为 HTML 或其他格式
  4. 查看或导出结果

第三部分: 基础语法

💡 别被"语法"这个词吓到,Markdown的语法比你想象的简单多了

(一)标题

标题是文档结构的骨架,帮助读者快速把握文章脉络。在 Markdown 中,通过 # 符号创建标题层级。

在行首插入 1 到 6 个 #,对应 1 到 6 级标题。

⚠️ 警告:

  1. 一级标题的唯一性: 一个文档中只有一个一级标题,这是良好的文档结构规范
  2. 行首位置: # 号必须在行首,前面不能有其他字符(包括空格和制表符)
  3. 符号与文字间的空格: # 号和标题文字之间必须有一个空格
  4. 合理的层级结构: 标题的层次结构应该遵循逻辑顺序,不应该跳级使用
Markdown语法 渲染效果
# 一级标题

一级标题

## 二级标题

二级标题

### 三级标题

三级标题

#### 四级标题

四级标题

##### 五级标题
五级标题
###### 六级标题
六级标题

(二)段落和换行

一个 Markdown 段落由一个或多个连续文本行构成,其前后需有一个以上空行分隔;
若要实现换行效果,可在行尾添加两个及以上空格后回车。

我是段落1,我后面有两个空格

我是段落2,我后面没有空格
我是段落3,我前面没有空格

渲染效果如下:

我是段落1,我后面有两个空格

我是段落2,我后面没有空格
我是段落3,我前面没有空格

(三)文本强调

文本强调是提升内容可读性和表达力的重要手段。合理的强调能够引导读者注意力,突出关键信息,增强文章的表现力。Markdown
提供了简洁直观的语法来实现文本的样式变化,包括斜体、粗体以及两者的组合。

一个星号 * 或下划线 _ 表示斜体
两个星号 ** 或下划线 __ 表示粗体
三个星号 *** 或下划线 ___ 表示粗斜体

⚠️ 建议:

  1. 统一使用 _ 表示斜体
  2. 统一使用 ** 表示加粗
*我是斜体文本*  
_我也是斜体文本_

**我是加粗文本**  
__我也是加粗文本__

***我是粗体+斜体文本***  
___我是粗体+斜体文本___  

渲染效果如下:

我是斜体文本
我也是斜体文本

我是加粗文本
我也是加粗文本

我是粗体+斜体文本
我是粗体+斜体文本

(四)列表

Markdown 支持有序列表和无序列表。

无序列表

使用 *-+ 作为列表标记,后跟一个空格,再输入列表内容。

⚠️ 注意:

  1. 建议统一使用 - ,视觉更清晰
  2. 标记符号后必须有一个空格
* 无序列表项1  
* 无序列表项2  

- 无序列表项3  
- 无序列表项4  

+ 无序列表项5  
+ 无序列表项6  

渲染效果如下:

  • 无序列表项1
  • 无序列表项2
  • 无序列表项3
  • 无序列表项4
  • 无序列表项5
  • 无序列表项6

有序列表

使用数字加 . 作为标记,后跟一个空格,再输入列表内容。

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

渲染效果如下:

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

嵌套列表

列表可以嵌套使用,创建多层次的结构

⚠️ 警告:

  1. 子列表需要缩进 2-4 个空格(推荐 2 个)且所有的子列表请保持一致的缩进长度
  2. 可以无限层嵌套,但实际使用中建议不超过3层

无序列表嵌套:

- 水果
    - 苹果
        - 红苹果
        - 绿苹果
    - 橙子
        - 橘子
        - 橘橙
    - 香蕉
    - 梨
- 蔬菜
    - 胡萝卜
    - 白菜

渲染效果如下:

  • 水果
    • 苹果
      • 红苹果
      • 绿苹果
    • 橙子
      • 橘子
      • 橘橙
    • 香蕉
  • 蔬菜
    • 胡萝卜
    • 白菜

有序列表嵌套:

1. 需求阶段
    1. 收集需求
    2. 分析需求
2. 开发阶段
    1. 需求评审
    2. 需求开发
3. 上线阶段
    1. 测试
    2. 运维

渲染效果如下:

  1. 需求阶段
    1. 收集需求
    2. 分析需求
  2. 开发阶段
    1. 需求评审
    2. 需求开发
  3. 上线阶段
    1. 测试
    2. 运维

混合嵌套:

1. 主要任务
    - 子任务A
    - 子任务B
        1. 详细步骤1
        2. 详细步骤2
    - 子任务C
2. 次要任务

渲染效果如下:

  1. 主要任务
    • 子任务A
    • 子任务B
      1. 详细步骤1
      2. 详细步骤2
    • 子任务C
  2. 次要任务

(五)链接

网址链接

链接让 Markdown 文档具有交互性,便于创建易于导航的内容。

语法格式:

[链接名称](链接地址)

[链接文字](链接地址 "可选的标题")

几个实际例子:

[百度](http://www.baidu.com)
[百度](http://www.baidu.com "百度一下,你就知道")
[数说编程](http://numerocode.top/ "我的技术博客")

邮箱和电话链接

markdown联系我:[发送邮件](mailto:example@email.com)

电话联系:[拨打电话](tel:+86-138-000-0000)

锚点链接

<a id="custom-anchor"></a>

## 自定义锚点位置

[跳转到自定义位置](#custom-anchor)
[回到基础语法](#custom-anchor)  
[回到顶部](#)

(六)图片

图片能让文档更加生动和易于理解。

语法格式:

![替代文字](图片路径)
![替代文字](图片路径 "图片标题")

相对路径示例:

![桌面截图](./images/screenshot.png)
![用户界面](../assets/ui-demo.jpg "用户界面演示")
![应用图标](images/icon.svg "应用图标")

绝对路径示例:

![本地图片](/Users/username/Documents/image.png)
![系统截图](C:\Users\username\Pictures\screenshot.png)

直接引用网络图片:

![我的头像](https://numerocode.top/images/logo.png)
![我的博客](https://numerocode.top “数说编程")

Markdown 还没有办法指定图片的高度与宽度,如果你需要的话,你可以使用普通的 标签。

<img src="https://numerocode.top/numerocode-img/2025-08-05-dc8f886b6e8ccb87713e6a704f001d30.png" width="50%">

(七)引用块

在引用内容行首添加 > 符号表示引用。

单个段落引用

> 这是一段引用内容。

渲染效果如下:

这是一段引用内容。

多个段落的块引用

> 我是段落1
>
> 我是段落2

渲染效果如下:

我是段落1

我是段落2

嵌套块引用

> 我是主段落
>
>> 1. 我是嵌套段落1
>> 2. 我是嵌套段落2

渲染效果如下:

我是主段落

  1. 我是嵌套段落1
  2. 我是嵌套段落2

(八)分割线

分割线用于分隔文档内容,创建清晰的层次结构。
常用于章节分隔和内容区块分隔。

水平分割线的三种写法: ---***___

⚠️ 警告:

  1. 分割线必须独占一行(不能包含其他内容)
  2. 分割线前后最好都要添加空白行
---

***

___

渲染效果如下:




(九)表格

使用|分隔列,使用 ---- 定义表头和内容的分隔线

使用 : 来设置内容对齐方式,如: :---- 表示左对齐,----: 表示右对齐,:----:表示居中对齐

⚠️ 提示:

  1. 表格中可以设置文本格式;如:加粗,斜体,行内代码
  2. 表格中可以使用HTML标签
  • 内容对齐示例:
| 左对齐表头 | 居中对齐表头 |  右对齐表头 |
|:------ |:------:|-------:|
| 内容 | 内容 |      内容 |
| 内容 | 内容 |     内容 |

渲染效果如下:

左对齐表头 居中对齐表头 右对齐表头
内容 内容 内容
内容 内容 内容
  • 表格内容使用特殊符号示例:
|  Markdown语法   |      渲染效果       |
|:-------------:|:---------------:|
|   `# 一级标题`    | <h1> 一级标题 </h1> |
|   `## 二级标题`   | <h2> 二级标题 </h2> |
|  `### 三级标题`   | <h3> 三级标题 </h3> |
|  `#### 四级标题`  | <h4> 四级标题 </h4> |
| `##### 五级标题`  | <h5> 五级标题 </h5> |
| `###### 六级标题` | <h6> 六级标题 </h6> |

渲染效果如下:

Markdown语法 渲染效果
# 一级标题

一级标题

## 二级标题

二级标题

### 三级标题

三级标题

#### 四级标题

四级标题

##### 五级标题
五级标题
###### 六级标题
六级标题

(十)代码块

使用三个反引号 ``` 创建代码块, 在反引号后指定代码语言,可实现语法高亮。

Markdown支持的语言包括但不限于:

  • javascriptjs
  • pythonpy
  • java
  • html
  • css
  • sql
  • bashshell
``` json
{
  "name": "数说编程",
  "age": 22,
  "gender": "男"
}
```

渲染效果如下:

{
  "name": "数说编程",
  "age": 22,
  "gender": "男"
}

(十一)内联元素

内联代码:
使用单个反引号包裹表示代码片段:console.log("Hello World")

键盘按键:
表示按键组合:Ctrl+C

删除线:
使用两个波浪号包围文本:已删除的内容

(十二)转义字符

当需要显示Markdown特殊字符本身时,请在字符前面添加反斜杠字符 \:

* 我是没有转义字符的段落.

\* 我是有转义字符的段落.

渲染效果如下:

  • 我是没有转义字符的段落.

* 我是有转义字符的段落.

常见的需要转义的字符包括:

  • \\: 反斜杠
  • \*\_: 星号和下划线
  • \[\]: 方括号
  • \(\): 圆括号
  • \$: 美元符号(数学公式)
  • \\: 反斜杠本身

📝: 学会 Markdown 的语法,就像掌握了一种通用的写作语言,走到哪都能优雅地表达。

第四部分: 如何快速上手?

选择一个编辑器

  • 初学者推荐:Typora(所见即得)
  • 程序员推荐:VS Code(配合插件功能强大)
  • 笔记用户推荐:Obsidian(知识管理)

循序渐进学习

  • 先掌握基础语法:标题、段落、列表
  • 再学习进阶语法:链接、图片、代码块
  • 最后了解扩展语法:表格、任务列表等

动手实践

  • 每天用Markdown写日记
  • 用Markdown整理学习笔记

第五部分: 常见问题和解决方案

常见问题解答:

为什么我的Markdown在不同平台显示不一致?

  • 不同平台可能支持不同的Markdown扩展语法
  • 解决方案:使用标准Markdown语法,避免过度依赖扩展功能

如何在Markdown中调整图片大小?

  • 标准Markdown不支持图片尺寸调整
  • 解决方案:使用HTML的<img>标签或平台特定的扩展语法

如何实现更复杂的表格?

  • 标准Markdown表格功能有限
  • 解决方案:使用HTML表格或寻找支持扩展语法的平台

第六部分: 数哥私藏资料推荐

编辑器推荐:

  • Typora:所见即所得,颜值很高(不过现在开始收费了)
  • Obsidian:笔记管理神器,Markdown支持超棒
  • VS Code:配合Markdown插件,功能强大
  • Intellij IDEA: JetBrains 公司的 IDEA,功能强大,支持Markdown

第七部分: 考考你

在markdown中如何写才能渲染出如下图内容

学习资源:

结语

Markdown这东西,说重要吧也不是核心技能,但说不重要吧,真能提升你的写作效率。掌握这个工具,能让你的技术写作之路顺畅不少。


📌 本次分享就到这里,感谢你的阅读!
🔔 关注【数说编程】,第一时间获取技术写作、效率工具、编程干货!
💬 如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、分享给更多朋友!