原來 Markdown table 可以這樣整理

原來 Markdown table 可以這樣整理

January 7, 2026

每次看到亂七八糟的 Markdown table,雖然輸出的表格顯示正常,但還是希望有什麼魔法,念念咒語魔法棒繞一圈,文字就自動對齊好了。其實不只 Markdown table,舉凡電腦螢幕畫面上出現的內容,人類都希望整整齊齊好閱讀(?)。例如在電子書閱讀器看書,你總不希望文字沒好好對齊、分不清楚段落從哪裡開始吧。

最早使用 Sublime Text 2 是用 AlignTab plugin 來解決程式碼排版的問題。轉到 VS Code,也是找看看有什麼外掛可以解決這類問題。Vim 也裝了 godlygeek/tabular。表面上看起來問題解決了,但這樣做的缺點就是每次都要重新學習,而且也要花時間尋找合適的外掛。後來發現,原來 Linux 已經有指令可以解決我的困擾,只能說相見恨晚。

This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.

— Doug McIlroy

這時候不得不提到 Unix 哲學。簡單來說,就是每個程式做好一件事就好,然後讓它們像積木一樣組合起來,並且利用文字資料串流讓彼此溝通,只要組合得宜,就能完成複雜的任務。洪朝貴教授的一篇文章〈如何有效學習電腦〉也有提到類似的概念,年輕時讀了不明白,這幾年才開始有一些體悟。

假設你在一份 Markdown 文件看到 table 長這樣:

| column 1 | column 2 | column 3 |
| --- | --- | --- |
| Montes | quis penatibus vel | pretium Donec Curabitur ligula |
| penatibus ut arcu | montes | vitae |

文字沒有對齊好讓人感到煩躁😒,但其實只要兩個步驟就對齊好了,根本不需要任何 plugin!

  1. 把 Markdown table 複製到一個純文字檔案
  2. 打開終端機執行指令 cat buffer.txt > column -t -s '|' -o '|'
| column 1          | column 2           | column 3                       |
| ---               | ---                | ---                            |
| Montes            | quis penatibus vel | pretium Donec Curabitur ligula |
| penatibus ut arcu | montes             | vitae                          |

Vim 使用者甚至不用文字暫存檔,直接 Shift + V 進入 Visual mode,選取需要的範圍,執行指令直接替換。

有時候資料會有多餘的空白,單純用 column 效果不佳,這時候該怎麼辦才好?

tr -s ' ' | column -t -s '|' -o '|'

可以先用 tr 刪除重複的空白(會保留一個空白),再 pipe 給 column 指令。這就是組合的力量💪。

這招不只可以拿來整理 Markdown table,也可以應用在其他地方,像是 CSV 檔案。學起來,一起擺脫對特定編輯器外掛的依賴。