兩種編輯器、同一種格式:所見即所得與 Markdown 模式

重點摘要
  • 每一則貼文與留言都是以 Markdown 儲存,所見即所得編輯器只是替你把 Markdown 打出來。
  • 第一名的陷阱是單一換行,舊版 Reddit 會把它吃掉,請改成留一整行空行。
  • 程式碼請用四格縮排而不是反引號圍籬,因為舊版會把圍籬原樣顯示成反引號。
  • ^(文字) 上標、>!文字!< 劇透與 r/ 自動連結,都是 Reddit 自己加的語法。

fancy pants 與 Markdown 模式

Reddit 每一則貼文與留言,儲存與渲染用的都是 Markdown,差別只在怎麼輸入。新版 Reddit 預設是社群戲稱為 fancy pants 的所見即所得編輯器:有粗體、斜體按鈕的工具列,背後幫你寫出 Markdown。另一個選擇是 Markdown 模式,讓你自己打語法的純文字輸入框。

Reddit 保留你的原始碼,然後渲染兩次

工具可以分成兩派。一派原封不動保留你寫的 Markdown;另一派在輸入當下就轉換掉、字元隨即丟棄,Notion 每個捷徑都是這樣運作的。Reddit 屬於前者,這對你是好事,也剛好解釋了這個站最大的怪癖:同一份原始碼,兩套渲染器,所以同一則留言在舊版與新版看起來可以不一樣。

怎麼切換編輯器

在輸入框角落找切換鈕,通常標示為「Markdown Mode」,或是小小的 T 或鉛筆圖示。點下去輸入框就會就地替換,Reddit 也會記住你的選擇。old.reddit.com 沒有東西可切,因為那裡只有原始 Markdown 輸入框。

該用哪一個

一句話裡加個粗體,用所見即所得就好。牽涉到表格、程式碼區塊或巢狀清單,請在動筆前就先切到 Markdown 模式。

注意:把 Markdown 原始碼貼進所見即所得編輯器,通常會得到轉一半的爛攤子,因為有些語法貼上時會被辨識、有些會原樣保留。寫到一半來回切換也可能弄丟格式,Reddit 會跳出提醒。

插圖:Reddit 留言框在所見即所得工具列與原始 Markdown 原始碼之間切換

在 Reddit 上到處都能用的基本語法

Reddit 的方言相當接近原始 Markdown 規格:比 Discord 這類聊天軟體強得多,但明顯比 GitHub 風格 Markdown 窄。以下是穩定可靠的核心:

# 一級標題
###### 六級標題

**粗體**  *斜體*  ***粗斜體***  ~~刪除線~~

[連結文字](https://example.com)
https://example.com   (原始網址會自動變連結)

- 項目符號
  - 巢狀項目
1. 編號項目

> 引用一行

`行內程式碼`

---

影響很大的小規則

新版 Reddit 遵循 CommonMark 規定,井字號後必須有空格,所以 # 標題 是標題、#標題 不是;舊版兩種都接受。光這點差異,就足以讓同一行在一邊是標題、另一邊變成多餘的井字號,來龍去脈可見標題指南

另外兩條規則也很值回票價:

  • 清單第一個項目前要留一行空行,否則會被併進上一段。
  • 編號清單會自動重新編號,所以每一行都寫 1. 也沒問題。

Reddit 還會自動連結自家參照:直接寫 r/formattingu/spez,不需方括號就會變成連結。這是站內專屬擴充,所以別期待連結指南或 Reddit 以外的地方也有。

Reddit 的程式碼:四格縮排規則與圍籬區塊

行內程式碼到哪裡都一樣:用單個反引號包住文字,就會以等寬字體顯示,內部所有格式失效。真正看得出 Reddit 歷史包袱的是區塊。

歷史悠久的四格縮排

Reddit 長年以來做程式碼區塊的唯一方式,就是把每一行都縮排四個空格。這個寫法至今有效,也仍是相容性最好的選擇:

以下是程式碼區塊:

    def total(items):
        return sum(items)

回到一般文字。

縮排區塊前那一行空行是必要的。這條規則反過來也是陷阱:任何被不小心縮排四格的段落都會悄悄變成程式碼區塊,這就是貼上的文字有時會變成一整塊灰色等寬文字的原因。

圍籬式區塊

新版 Reddit 與官方 App 也接受三個反引號的圍籬式區塊,語言名稱可加可不加。但限制很直白:舊版 Reddit 不會渲染圍籬式區塊,那邊的讀者看到的是原樣反引號包著沒排版的程式碼。Reddit 本來就不替程式碼上色,加語言標籤在這裡沒有任何好處,和你在 GitHub 寫的圍籬式區塊不同。

```
def total(items):
    return sum(items)
```

小提醒:用讀者決定寫法。只要可能有陌生人看到,就用四格縮排;確定大家都在新版或官方 App 上,才用圍籬式區塊。

Reddit 專屬語法:上標、劇透與表格

上標

插入符號會把後面的文字變成上標。單獨使用只作用到一個詞,加上括號則可以整句變成上標,而且行為一致得多,建議一律用括號版本。

E = mc^2
大家都知道。 ^(來源:相信我就對了)
連續 ^^插入符號在舊版 Reddit 上會疊得更高

上標是 Reddit 寫旁白與免責聲明的招牌風格,但也非常容易誤觸。

注意:數學式裡的插入符號會把後面的東西整個抬起來。要表示次方時請寫成 2\^10,加上反斜線,才不會變成一句悄悄話。

劇透

Reddit 官方的劇透語法是用 >!!< 把文字包起來,內容會被黑色色塊蓋住,讀者點擊才顯示。

兇手是 >!管家!<,地點在圖書室。

這在新版 Reddit 與官方 App 上都能正常顯示。舊版支援一直不太一致,有些老牌子版還留著官方標籤問世前的 CSS 劇透做法,所以最好先預覽再送出。Discord 用兩條直線解決同一個問題,常跨平台轉貼的人值得記住。

表格

直線表格在 Reddit 上可以用,分隔列裡的對齊冒號也有效。標題列與分隔列都是必要的,少了任何一個,直線就只會是直線。

| 品項      | 數量 |   價格 |
|:----------|:---:|------:|
| 鍵盤      |  1  |  $89 |
| 滑鼠      |  2  |  $24 |

Reddit 表格不支援合併儲存格、多行儲存格與表格標題,更複雜的內容請改用圖片或外部頁面。一般規則與「在儲存格裡放一個直線符號」的做法,見 Markdown 表格指南

Reddit Markdown 支援對照表

下表反映貼文與留言使用的渲染器。舊版與新版 Reddit 行為不同時,備註欄會註明。

功能語法是否支援備註
標題# ###### 支援新版必須在井字號後加空格,舊版不用
粗體**文字**支援兩個底線也可以
斜體*文字*_文字_支援snake_case 中的底線建議跳脫
粗斜體***文字***支援
刪除線~~文字~~支援波浪號內側不能有空格
連結[文字](網址)支援參照式連結不可靠,請用行內寫法
原始網址https://...支援自動變成連結
子版與使用者r/名稱u/名稱支援Reddit 擴充語法;不需方括號
項目清單- 項目支援第一個項目前要留空行
編號清單1. 項目支援編號會自動重新排序
引用區塊> 文字支援>> 做巢狀很脆弱,記得加空行
行內程式碼`程式碼`支援內部格式一律失效
縮排程式碼區塊四個空格支援舊版 Reddit 唯一看得懂的區塊寫法
圍籬程式碼區塊三個反引號部分支援僅新版 Reddit 與官方 App;舊版會原樣顯示
表格直線與破折號支援需要標題列與分隔列;不能合併儲存格
上標^(文字)支援Reddit 擴充語法;括號寫法最保險
劇透>!文字!<多數情況支援Reddit 擴充語法;舊版支援一直不太穩定
水平分隔線---支援上方要留空行,否則會變成標題
圖片語法![替代文字](網址)不支援請改用上傳;留言插圖只有版主開啟時才有
待辦清單- [ ] 項目不支援方括號會原樣顯示
註腳[^1]不支援請改用上標或普通清單
原始 HTML<b>文字</b>不支援基於安全考量會被移除

換行陷阱,以及其他會壞掉的地方

單一換行會消失

先講解法:段落之間留一行空行,或在行尾打兩個空格,強制在同一段內換行。空行是比較安全的習慣,因為行尾空格看不見,也常被編輯器清掉。

再講原因。在傳統 Markdown 中,單一換行等同於一個空格,所以下面三行會被併成同一段:

第一行
第二行
第三行

新版 Reddit 的渲染器通常會保留換行,這正是問題惱人的地方。你的清單在編輯時完全正確,送出後在舊版讀者眼中卻擠成一長句。

圖片、HTML 與註腳

Markdown 圖片語法在 Reddit 上完全不會渲染,實務上只能把圖片單獨發成貼文或貼連結。留言插圖是各子版由版主自行開啟的設定,也有些子版允許 Reddit 專屬的 GIF 語法,兩者都不是全站可靠的功能,這點和圖片指南裡那些平台不同。原始 HTML 會被移除,註腳則從來不支援。

引用與縮排的怪癖

除非留一行空行,引用區塊會把緊接著的下一行一起吃掉,所以直接寫在 > 引用文字 下方的回覆會被算進引用裡。用 >> 做巢狀引用時,層與層之間要放一行空的引用行,寫法見引用區塊指南。另外因為四個空格代表「程式碼」,在清單項目底下用四格縮排寫延續段落,得到的是程式碼區塊。

跳脫

在字元前加反斜線就會原樣印出。Reddit 上值得跳脫的字元有 *_^~#>[]|

\#1 的問題       保留井字號,不會變成標題
5 \* 3 = 15      保留星號
2\^10            保留插入符號

底線特別需要小心,因為帳號、檔案路徑與 snake_case 變數裡到處都是。整串用反引號包起來比逐一跳脫快得多,這也是粗體與斜體指南建議的做法。

舊版與新版 Reddit,以及如何同時照顧兩邊

至今仍有一群很有聲量的使用者以 old.reddit.com 瀏覽,那裡跑的是舊版渲染器。你寫的字會同時被兩邊讀到,所以請照嚴格的那一邊寫。真正會咬人的差異很短,背下來就好:

  • 圍籬式程式碼區塊在新版可渲染,在舊版顯示成原樣反引號。請改用四格縮排。
  • 單一換行在新版通常保留,在舊版會被吃掉。請用空行。
  • 井字號後沒空格的標題在舊版有效、新版無效。請一律加空格。
  • 劇透標籤在新版與官方 App 上可靠,其他環境就不一定。
  • 子版自訂 CSS 只存在於舊版,客製樣式不會影響新版怎麼顯示你的留言。

送出前的兩分鐘檢查

  1. 每個區塊之間都補上空行,清單與分隔線前面也要。
  2. 把反引號圍籬換成四格縮排。
  3. 替每個 # 補上後面漏掉的空格。
  4. 先預覽,內容較長就再到舊版 Reddit 打開看一次。

兩個習慣就能解決絕大部分問題:所有區塊之間都留空行,有兩種寫法時一律選比較舊的那種。留言上限是 10,000 字元,自撰貼文內文則是 40,000 字元。

Reddit 在眾多方言中的位置

Reddit 只是眾多方言之一,這也是同一段文字在三個地方長得不一樣的原因。Discord 的聊天子集是更精簡的表親,Obsidian 則呈現「檔案真的屬於你」之後會有什麼不同。平台總覽把各家並排在同一張表裡。

還在猶豫要學哪一種?該學哪一種 Markdown 方言是最短的答案,Markdown 完整指南語法速查表則是最長的那份。

相容性資料驗證日期

常見問題

Reddit 要怎麼切換到 Markdown 編輯器?

在新版 Reddit 的輸入框角落找切換鈕,通常標示為「Markdown Mode」,或顯示成小小的 T 或鉛筆圖示。點下去所見即所得編輯器就會換成純文字框,Reddit 也會記住設定。old.reddit.com 上每個輸入框本來就是 Markdown 框。

為什麼 Reddit 會忽略我的換行?

因為傳統 Markdown 中單一換行等同一個空格,舊版 Reddit 至今仍照此處理。要分段請在行與行之間留一行空行;想在同段內強制換行,則在行尾打兩個空格。空行比較安全,因為行尾空格看不見,也容易被清掉。

Reddit 留言裡的程式碼區塊怎麼打?

把每一行都縮排四個空格,並在上方留一行空行。這種寫法在所有地方都正確,包括舊版 Reddit。三個反引號的圍籬式區塊在新版 Reddit 與官方 App 上也有效,但舊版讀者會看到原樣的反引號。

可以用 Markdown 在 Reddit 留言裡貼圖片嗎?

不行。![替代文字](網址) 在 Reddit 任何地方都不會渲染。只有在版主開啟「留言插圖」的子版才能直接在留言中上傳圖片;否則請把圖片單獨發成一篇貼文,或直接貼連結。

Reddit 支援表格嗎?

支援。直線表格在舊版與新版 Reddit 上都能渲染,分隔列中的冒號可控制欄位對齊。標題列與分隔列都不可省略。不支援合併儲存格、多行儲存格與表格標題。

延伸閱讀

立即使用編輯器

立即使用編輯器