---
title: 基础语法
description: Markdown 基础语法
---

# 基础语法

> Markdown 有诸多“方言”，本文档中的语法规则适用于大多数 Markdown 编辑器，但不保证适用于所有 Markdown 编辑器。 &lt;br /&gt;

撰写文档时应习惯在特殊符号与内容之间加入空格，以避免部分 Markdown 编辑器中符号与内容之间的渲染效果不同或文本中产生冲突。

## 标题

在一段文本前面加 `#` 号，可以将其转换为标题。

```md [Markdown]
    # 一级标题
    ## 二级标题
    ### 三级标题
  ```

    # 一级标题
    ## 二级标题
    ### 三级标题

标题的级别由 `#` 号的数量决定，一级标题对应一个 `#` 号，二级标题对应两个 `#` 号，以此类推，最多支持六级标题。

> `#` 号与标题文本之间需要有一个空格，否则会被解析为普通文本或其他内容。


## 段落

与传统的文本编辑软件不同，*Markdown* 中段落并不是由换行分隔的，而是由一个或多个空行分隔的。

```md [Markdown]
    这是一句话。
    这是另一句话。

    这是另一个段落
  ```

    这是一句话。
    这是另一句话。

    这是另一个段落

如果要在段落中强制换行，可以在行尾插入至少两个空格。

> 在 *Markdown* 中的文本一般情况下不进行缩进，所有文本均顶格。


## 文字格式

*Markdown* 使用星号（`*`）和下划线（`_`）作为强调字词的标记符号。

> 强调符号与文段中的文字之间需要有一个空格，否则可能被解析为普通文本或其他内容。 &lt;br /&gt;
> 请将 `*` 作为首选的强调符号，避免部分 *Markdown* 编辑器中星号（`*`）和下划线（`_`）的渲染效果不同或文本中产生冲突。

### 斜体（Italic）

使用一个星号（`*`）或下划线（`_`）将文本包围起来，可以用斜体来突出显示文本。

```md [Markdown]
    这是一段 *斜体* 演示

    这是一段 _斜体_ 演示
  ```

    这是一段 *斜体* 演示

    这是一段 _斜体_ 演示


### 粗体（Bold）

使用两个星号（`**`）或下划线（`__`）将文本包围起来，可以用粗体来突出显示文本。

```md [Markdown]
    这是一段 **粗体** 演示

    这是一段 __粗体__ 演示
  ```

    这是一段 **粗体** 演示

    这是一段 __粗体__ 演示


### 粗斜体（Bold & Italic）

使用三个星号（`***`）或下划线（`___`）将文本包围起来，可以同时使用粗体和斜体来突出显示文本。

```md [Markdown]
    这是一段 ***粗斜体*** 演示

    这是一段 ___粗斜体___ 演示
  ```

    这是一段 ***粗斜体*** 演示

    这是一段 ___粗斜体___ 演示



## 链接

*Markdown* 中的链接语法非常简单，只需将 URI 链接地址放在尖括号（`<>`）中。

```md [Markdown]
    &lt;https://shift2modern.dev/&gt;

    &lt;mail@example.com&gt;
  ```

    &lt;https://shift2modern.dev/&gt;

    &lt;mail@example.com&gt;

> 尖括号（`<>`）中的链接地址可以是任意的 URI，可以是 `http://`、`https://`、`ftp://` 等协议，也可以是电子邮件地址。

### 超链接

如果想像 *Word* 中为内容添加超链接，可以使用以下语法：

```md [Markdown]
    [Shift2Modern](https://shift2modern.dev)
  ```

    [Shift2Modern](https://shift2modern.dev)

可以在链接地址后面添加一个空格，然后再添加使用双引号（`""`）包围起来的文字来设定链接的标题。

`[Shift2Modern](https://shift2modern.dev "Shift2Modern")`

将鼠标悬停在链接上，会显示 `Shift2Modern` 这个标题。

[Shift2Modern](https://shift2modern.dev "Shift2Modern")

> 不同 *Markdown* 编辑器处理链接中空格的方式不同，所以人们习惯于用`%20`来代替空格。 &lt;br /&gt;
> 例如，`https://shift2modern.dev/Shift2Modern%20Blog` 与 `https://shift2modern.dev/Shift2Modern Blog` 是等价的。


### 链接的修饰

超链接的文字可以使用 *Markdown* 中的文字格式语法进行修饰。


### 引用链接

如果想要在文档中多次使用同一个链接，可以使用引用链接的方式。

```md [Markdown]
    [Shift2Modern][1]

    [Shift2Modern2][1]

    [1]: https://shift2modern.dev
  ```

    [Shift2Modern][1]

    [Shift2Modern2][1]

    [1]: https://shift2modern.dev

> 在引用链接的实际链接处，需要在方括号（`[]`）后面加上冒号（`:`）和**一个空格**，否则可能会被解析为普通文本。


## 图片

*Markdown* 中的图片语法与链接语法非常相似，只需在感叹号（`!`）后面加上方括号（`[]`），然后将图片的 **URI 地址** 或 **相对路径** 放在小括号（`()`）中。

> 使用相对路径时请不要忘记同时上传图片文件。

例如：

`![](https://r2.shift2modern.dev/shi-sheng-o_Zjjv2PJ9o-unsplash.jpg)`

![](https://r2.shift2modern.dev/shi-sheng-o_Zjjv2PJ9o-unsplash.jpg)
Photo by [Shi Sheng](https://unsplash.com/@shisheng?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/photos/o_Zjjv2PJ9o?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)  

> *Markdown* 原生不支持图片大小调节，如有需要请使用 *HTML* [标签](https://www.w3school.com.cn/tags/att_img_height-width.asp) 。

如需给图片添加链接，只需要将 **整个** 图片代码再使用方括号（`[]`）包裹，将链接放在最后新添加的小括号（`()`）中即可。

就像这样：

`[![](https://r2.shift2modern.dev/shi-sheng-o_Zjjv2PJ9o-unsplash.jpg)](https://unsplash.com/photos/o_Zjjv2PJ9o)`

[![](https://r2.shift2modern.dev/shi-sheng-o_Zjjv2PJ9o-unsplash.jpg)](https://unsplash.com/photos/o_Zjjv2PJ9o)
Photo by [Shi Sheng](https://unsplash.com/@shisheng?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/photos/o_Zjjv2PJ9o?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)  


## 代码

*Markdown* 提供了两种方式来标记代码，分别是行内代码和代码块。

```md [Markdown]
    这是一段`行内代码`演示

    ```
    这是一段代码块演示
    ```
  ```

    这是一段`行内代码`演示

    ```
    这是一段代码块演示
    ```

> 如果**行内代码**中包括了反引号（`` ` ``），可以将其用两个反引号（`` ` ` ``）包裹起来。 &lt;br /&gt;
> 代码块除了用三个反引号（`` ``` ``）包裹外，还可以使用三个波浪号（`` ~~~ ``）包裹。

## 引用

在一段文本前面加上 `>` 符号，可以将其转换为引用。

```md [Markdown]
    > 这是一段引用
    >> 这是一段嵌套引用
  ```

    > 这是一段引用
    >> 这是一段嵌套引用


## 表格

*Markdown* 中表格使用 `|` 来分隔不同的单元格，使用 `-` 来分隔表头和其他行。

```md [Markdown]
    | 表头   | 表头   |
    | ------ | ------ |
    | 单元格 | 单元格 |
    | 单元格 | 单元格 |
  ```

    | 表头   | 表头   |
    | ------ | ------ |
    | 单元格 | 单元格 |
    | 单元格 | 单元格 |

表格可以使用冒号（`:`）来定义对齐方式，左对齐在分割符左侧添加冒号（`:`），右对齐在分割符右侧添加冒号（``），居中在分割符两侧侧添加冒号（`:`）。

```md [Markdown]
    | A      |   B   |      C |
    | :----- | :---: | -----: |
    | 左对齐 | 居中  | 右对齐 |
  ```

    | A      |   B   |      C |
    | :----- | :---: | -----: |
    | 左对齐 | 居中  | 右对齐 |



## 分割线

*Markdown* 中的分割线语法非常简单，只需在一行中使用三个以上的星号（`***`）、减号（`---`）或下划线（`___`）。

```md [Markdown]
    这是一种分割线演示
    ***
    这是一种分割线演示

    ---
    这是一种分割线演示
    ___
  ```

    这是一种分割线演示
    ***
    这是一种分割线演示

    ---
    这是一种分割线演示
    ___

> 减号分割线下添加了一行空行，因为文字后一行使用连续的三个减号（`---`）或等号（`===`）会被解析为标题。


## 列表

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

### 无序列表

无序列表使用星号（`*`）、加号（`+`）或减号（`-`）作为列表标记。

```md [Markdown]
    * 无序列表
    * 无序列表
    * 无序列表
    + 无序列表
    + 无序列表
    + 无序列表
    - 无序列表
    - 无序列表
    - 无序列表
  ```

    * 无序列表
    * 无序列表
    * 无序列表
    + 无序列表
    + 无序列表
    + 无序列表
    - 无序列表
    - 无序列表
    - 无序列表

> 对于同一个列表，列表标记的使用应该保持一致。

### 有序列表

有序列表使用数字接着一个英文句点作为列表标记。

```md [Markdown]
    1. 有序列表
    2. 有序列表
    3. 有序列表
  ```

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

> 数字不必按照顺序，也可重复使用，但列表启示的数字应该是 1。 &lt;br /&gt;
> 建议使用数字顺序或重复 1 作为列表标记。

列表中可以嵌套列表或以上介绍过的语法。


## 转义字符

*Markdown* 语法中的一些字符具有特殊的含义，如果需要在文本中使用这些字符，需要使用反斜杠（`\`）进行转义。

由两个字符需要特殊处理：`<` 和 `&`。

`<` 符号用于起始标签，`&` 符号则用于标记 HTML 实体，如果是想要使用这些符号，必须要使用实体的形式，如：`&lt;` 与 `&amp;`。


## 内嵌 HTML 标签

Markdown 语法中的一些标签无法满足需求，这时可以使用 HTML 标签来实现。

对于 HTML 的块级元素 `&lt;div&gt;`、`&lt;table&gt;`、`&lt;pre&gt;` 和 `&lt;p&gt;`，请在其前后使用空行（blank lines）与其它内容进行分隔。尽量不要使用制表符（tabs）或空格（spaces）对 HTML 标签做缩进，否则将影响格式。

在 HTML 块级标签内不能使用 Markdown 语法。例如 `&lt;p>*italic* and **bold**</p&gt;` 将不起作用。
