你可能不知道的Markdown騷操作

NO IMAGE

前言

Markdown 是我們廣大程序員最熟悉的一門語言之一,因為它易讀,語義化等特點,被我們廣泛用於文檔編寫中,可以說是和 JSON 相提並論的一種通用語法。

可你是否知道,Markdown 其實玩出很多騷操作呢?今天,我們用基於 CommonMark 的 GFM 規範為例,給大家總結了以下的騷操作。

正文

操作一:Tab 不等效空格的情況

圖片中的 -> 即代表 tab 鍵

在 Markdown 中,一個 Tab 和四個空格通常是等效的。

你可能不知道的Markdown騷操作

示例代碼

  - foo
bar

但如果 tab 作為文字內部的字符傳遞,就不會等效為四個空格。

你可能不知道的Markdown騷操作

示例代碼

    foo    baz        bim

操作二:在圍欄代碼塊裡顯示三個 `

我們有的時候需要在 Markdown 中編寫一個 Markdown 的代碼塊,就像這樣:

```js
const a = 2;
```

這時候圍欄如果還是用三個 ` 的話,會解析失敗。其實我們還可以用 ~ 來做代碼塊的圍欄。

你可能不知道的Markdown騷操作

示例代碼

~~~
aaa
```
~~~

當然,還有你要堅持用 `,也可以,只要讓外層的圍欄長度更長一些即可:

你可能不知道的Markdown騷操作

示例代碼

````
aaa
```
``````

操作三:圍欄可以縮進

如果起始圍欄是縮進的,則內容行將刪除等效的起始縮進(如果存在的話):

你可能不知道的Markdown騷操作

你可能不知道的Markdown騷操作

你可能不知道的Markdown騷操作

示例代碼

 ```
aaa
aaa
```
  ```
aaa
aaa
aaa
```
   ```
aaa
aaa
aaa
```

操作四:在 Markdown 中寫註釋

你以為 Markdown 寫出來的東西都是明文嗎?其實並不然,因為兼容 HTML 的原因,所以 HTML 格式的註釋也是支持的:

你可能不知道的Markdown騷操作

示例代碼

foo <!-- this is a
comment - with hyphen -->

操作五:可以在 HTML 中包含 Markdown 內容

只需使用空行將 Markdown 與 HTML 分開:

你可能不知道的Markdown騷操作

示例代碼

<div>
*Emphasized* text.
</div>

操作六:使用鏈接引用定義避免重複寫鏈接地址

有時候,我們一篇文章會出現很多個重複鏈接,這時候,我們可以使用鏈接引用定義來避免重複寫鏈接地址:

你可能不知道的Markdown騷操作

示例代碼

[foo]: /url "title"
[foo]

操作七:表格行的單元格數量上可以有所不同

表格不同行的部分可以在單元格數量上有所不同。如果有多個單元格小於標題行中的單元格數,則插入空單元格。如果有多的,則忽略多餘的:

你可能不知道的Markdown騷操作

示例代碼

| abc | def |
| --- | --- |
| bar |
| bar | baz | boo |

操作八:塊引用的延遲原則

塊引用的延遲原則可以使我們省略段落延續文本前面的 >:

你可能不知道的Markdown騷操作

示例代碼

> # Foo
> bar
baz

操作九:多個塊引用放到一起,會得到一個大的塊引用

這稱為塊引用的持續性。

你可能不知道的Markdown騷操作

示例代碼

> foo
> bar

操作十:起始序號可以用 0 開頭:

你可能不知道的Markdown騷操作

示例代碼

0. ok

操作十一:改變無序或者有序列表的分隔符會另起新列表

你可能不知道的Markdown騷操作

示例代碼

- foo
- bar
+ baz

操作十二:強制換行

方法一:在行末加上反斜槓會被認為是強制換行

你可能不知道的Markdown騷操作

示例代碼

foo\
baz

但在段落或其他塊元素的末尾,這種方法不起作用:

你可能不知道的Markdown騷操作

方法二:可以在行尾使用兩個或多個空格

你可能不知道的Markdown騷操作

示例代碼

foo  
baz

操作十三:小心使用強調分隔符和標點符號一起的情況

左側分隔符後面出現標點符號,前面出現字母或數字。或者右側分隔符前面出現標點符號,後面出現字母或數字不算強調:

你可能不知道的Markdown騷操作

示例代碼

a*"foo"*

操作十四:強調可以嵌套

你可能不知道的Markdown騷操作

示例代碼

_foo __bar__ baz_

操作十五:鏈接標籤不區分大小寫

你可能不知道的Markdown騷操作

示例代碼

[Foo]
[foo]: /url "title"

結語

Markdown 是一門方便的編寫結構化文檔的語言。在熟悉了基本語法後再抽空去了解一下規範,可以使我們在日常的文檔編寫中效率更高。

相關文章

WebAssembly系列一:WebAssembly介紹

Flutter系列一:Flutter快速入門

大前端性能總結

【全是乾貨】談談如何學習一項新技能,沒有理論,全是實戰