- 1. 前言
- 2. 正文
- 2.1. 操作一:Tab 不等效空格的情況
- 2.2. 操作二:在圍欄代碼塊裡顯示三個 `
- 2.3. 操作三:圍欄可以縮進
- 2.4. 操作四:在 Markdown 中寫註釋
- 2.5. 操作五:可以在 HTML 中包含 Markdown 內容
- 2.6. 操作六:使用鏈接引用定義避免重複寫鏈接地址
- 2.7. 操作七:表格行的單元格數量上可以有所不同
- 2.8. 操作八:塊引用的延遲原則
- 2.9. 操作九:多個塊引用放到一起,會得到一個大的塊引用
- 2.10. 操作十:起始序號可以用 0 開頭:
- 2.11. 操作十一:改變無序或者有序列表的分隔符會另起新列表
- 2.12. 示例代碼
- 2.13. 操作十二:強制換行
- 2.14. 操作十三:小心使用強調分隔符和標點符號一起的情況
- 2.15. 操作十四:強調可以嵌套
- 2.16. 操作十五:鏈接標籤不區分大小寫
- 3. 結語
前言
Markdown 是我們廣大程序員最熟悉的一門語言之一,因為它易讀,語義化等特點,被我們廣泛用於文檔編寫中,可以說是和 JSON 相提並論的一種通用語法。
可你是否知道,Markdown 其實玩出很多騷操作呢?今天,我們用基於 CommonMark 的 GFM 規範為例,給大家總結了以下的騷操作。
正文
操作一:Tab 不等效空格的情況
圖片中的 -> 即代表 tab 鍵
在 Markdown 中,一個 Tab 和四個空格通常是等效的。

示例代碼
- foo
bar
但如果 tab 作為文字內部的字符傳遞,就不會等效為四個空格。

示例代碼
foo baz bim
操作二:在圍欄代碼塊裡顯示三個 `
我們有的時候需要在 Markdown 中編寫一個 Markdown 的代碼塊,就像這樣:
```js
const a = 2;
```
這時候圍欄如果還是用三個 ` 的話,會解析失敗。其實我們還可以用 ~ 來做代碼塊的圍欄。
示例代碼
~~~
aaa
```
~~~
當然,還有你要堅持用 `,也可以,只要讓外層的圍欄長度更長一些即可:

示例代碼
````
aaa
```
``````
操作三:圍欄可以縮進
如果起始圍欄是縮進的,則內容行將刪除等效的起始縮進(如果存在的話):



示例代碼
```
aaa
aaa
```
```
aaa
aaa
aaa
```
```
aaa
aaa
aaa
```
操作四:在 Markdown 中寫註釋
你以為 Markdown 寫出來的東西都是明文嗎?其實並不然,因為兼容 HTML 的原因,所以 HTML 格式的註釋也是支持的:

示例代碼
foo <!-- this is a
comment - with hyphen -->
操作五:可以在 HTML 中包含 Markdown 內容
只需使用空行將 Markdown 與 HTML 分開:

示例代碼
<div>
*Emphasized* text.
</div>
操作六:使用鏈接引用定義避免重複寫鏈接地址
有時候,我們一篇文章會出現很多個重複鏈接,這時候,我們可以使用鏈接引用定義來避免重複寫鏈接地址:

示例代碼
[foo]: /url "title"
[foo]
操作七:表格行的單元格數量上可以有所不同
表格不同行的部分可以在單元格數量上有所不同。如果有多個單元格小於標題行中的單元格數,則插入空單元格。如果有多的,則忽略多餘的:

示例代碼
| abc | def |
| --- | --- |
| bar |
| bar | baz | boo |
操作八:塊引用的延遲原則
塊引用的延遲原則可以使我們省略段落延續文本前面的 >:

示例代碼
> # Foo
> bar
baz
操作九:多個塊引用放到一起,會得到一個大的塊引用
這稱為塊引用的持續性。

示例代碼
> foo
> bar
操作十:起始序號可以用 0 開頭:

示例代碼
0. ok
操作十一:改變無序或者有序列表的分隔符會另起新列表

示例代碼
- foo
- bar
+ baz
操作十二:強制換行
方法一:在行末加上反斜槓會被認為是強制換行
示例代碼
foo\
baz
但在段落或其他塊元素的末尾,這種方法不起作用:

方法二:可以在行尾使用兩個或多個空格
示例代碼
foo
baz
操作十三:小心使用強調分隔符和標點符號一起的情況
左側分隔符後面出現標點符號,前面出現字母或數字。或者右側分隔符前面出現標點符號,後面出現字母或數字不算強調:

示例代碼
a*"foo"*
操作十四:強調可以嵌套

示例代碼
_foo __bar__ baz_
操作十五:鏈接標籤不區分大小寫

示例代碼
[Foo]
[foo]: /url "title"
結語
Markdown 是一門方便的編寫結構化文檔的語言。在熟悉了基本語法後再抽空去了解一下規範,可以使我們在日常的文檔編寫中效率更高。