Markdown 簡介 | About Markdown

Markdown 是一種帶標記的純文本格式岔擂。你可以在純文本中打上一些符號來表示文本的排版樣式屿讽,甚至插入外鏈的圖片穷遂。相比沒有多少排版格式可言的純文本來說它提供了基礎的常用排版樣式晌畅,幫助你凸顯文章的層次結構和關鍵信息玉组。相比于功能強大的 Word 來說敏储,它結構簡單易于上手阻星。雖然它不可能全方位替代 Word 之類的富文本編輯器或者專業(yè)排版工具,但是用來寫寫筆記已添、郵件或者博客文章還是挺好用的妥箕。

關于 Markdown 和 Word 的額外說明

對于平常不太接觸編程的人來說滥酥,有必要進一步解釋一下 Markdown 和 Word 的區(qū)別。計算機中的任何信息都是編碼成二進制數(shù)字的形式進行保存的畦幢。一般來說一個純文本文檔(Windows 記事本所生成的那種后綴為 .txt 的文件就是純文本文檔)僅僅基于字符編碼規(guī)則進行編碼坎吻,只能保存文本的文字組成而無法保存字體、樣式宇葱、顏色等排版信息禾怠。

要保存這些排版樣式信息就需要額外的約定和額外的空間。所以 Word 一般生成的文件不會是后綴為 .txt 的純文本文件而是后綴為 .docx 的專門的富文本(就是帶有排版信息和非文字信息的文本)格式贝搁。 .docx 文件會保存 .txt 文件中那樣的純文本字符編碼吗氏,但也會保存額外的表示各種排版樣式的編碼。

Markdown 的思路其實和 Word 差不多雷逆,也是用額外約定的編碼保存一些排版樣式信息弦讽。但是不同之處在于萌衬, Word 中保存排版樣式信息的這些編碼是不會給用戶看到的胯甩,由 Word 自動處理,用戶看到的只是 Word 根據(jù)編碼渲染后的狀態(tài)撒犀。而 Markdown 的涉及思路是某宪,即便用戶沒有合適的渲染工具仿村,也能以純文本形式打開 Markdown 文檔并保持文檔一定的可讀性。這就造成了 Markdown 和 Word 的極大不同兴喂。

當你的電腦上沒有安裝 Word 時蔼囊,別人發(fā)來的 .docx 文檔你是沒法查看的。即便解壓成文本文件衣迷,其中的各種復雜樣式標記也不適合人來了直接閱讀畏鼓。但一篇 Markdown 文檔即便不經(jīng)過任何渲染,大致也保持一個人能閱讀的狀態(tài)壶谒。

因此云矫,其實一些為了追求功能性,導致 Markdown 文本復雜度大大增加的拓展其實是有悖于 Markdown 的設計初衷的汗菜。

一般來說 Markdown 文件的后綴名設置為 .md让禀,也有用 .markdown 的。

標準和軟件

需要注意的是 Markdown 本身只是一種基于純文本的文件結構陨界。如果你用記事本之類的僅僅支持最基本純文本顯示的軟件打開巡揍,它也還是一個純文本。理論上你需要用一些工具軟件把它轉換成 HTML 或者 PDF 然后用相應的閱讀器打開才能看到格式普碎。不過一些編輯器會內置這些功能吼肥,讓你能直接預覽 Markdown 轉換渲染之后的樣子(VS Code 就是其中之一)录平。

對一般的文件格式或者描述性語言來說麻车,規(guī)則是抽象的缀皱,工具軟件是具體的。只要規(guī)則相同动猬,工具軟件可以隨便換啤斗。但是 Markdown 的情況卻比較復雜。其最初作者沒有給出 Markdown 的嚴謹語法定義赁咙,后來熱心開發(fā)者們創(chuàng)造的各種衍生版和拓展版又層出不窮钮莲。導致 Markdown 規(guī)則本身就存在混亂。這個軟件中寫好的 Markdown 到了那個軟件中彼水,顯示效果可能就不同了崔拥。因此擺脫開具體的 Markdown 編輯或瀏覽工具來談 Markdown 的語法規(guī)則有點空中樓閣的感覺。為此凤覆,特意在這里強調本文的 Markdown 主要基于以下規(guī)范和軟件:

  • CommonMark 一個社區(qū)項目链瓦,對最初的 Markdown 語法規(guī)則進行了整理和規(guī)范。
  • GitHub Flavored Markdown Spec 基于 CommonMark 并做了一些語法和功能拓展盯桦。由 GitHub 主導并為 GitHub 所支持(托管于 GitHub 的代碼倉庫中的 Markdown 文件會依據(jù)此協(xié)議渲染)慈俯。
  • Typora 一款商業(yè) Markdown 編輯器,支持非常多的 Markdown 擴展語法和功能拥峦,還能自定義渲染樣式表贴膘。雖然其中一些功能可能是過度設計,但確實包括了不少很好用的功能略号。另外就是這款軟件的編輯方式設計比較獨特刑峡,可以在渲染后的界面和代碼界面中切換(而不是像一般軟件那樣左右兩欄對照)。就算不使用這款軟件編輯 Markdown玄柠,它官網(wǎng)上的 Markdown 拓展語法和功能介紹也值得參考氛琢。
  • Visual Studio Code 微軟主導的開源純文本編輯器,自帶基本的 Markdown 支持随闪,可以通過插件支持拓展語法和功能阳似。具體的插件推薦在后文相關段落。

Visual Studio Code 基本功能插件

Visual Studio Code 對 Markdown 的基本支持是通過內建插件的方式實現(xiàn)的铐伴。這些內建插件不需要你額外安裝撮奏,而是集成到編輯器里的。你不能卸載它們当宴,但是可以停用它們畜吊。如果把這三個插件都停用掉,那么 VS Code 就完全失去了對 Markdown 的支持户矢,只能像處理普通純文本那樣處理它們玲献。其中最為基礎的是以下兩個。

語法高亮

插件 Markdown Language Basics 主要提供的是 Markdown 源碼的語法高亮功能。其 ID 是:

vscode.markdown

這個插件不能把你在 Markdown 中寫的標記符號轉換成相應的排版格式捌年。但是可以根據(jù)各種標記的語法屬性把他們染成不同顏色瓢娜,方便查看標記的語法結構。

此外據(jù)官方文檔中介紹這個插件還提供了 Markdown 的 Snippet 功能礼预,就是根據(jù)提示自動輸入大段格式化代碼眠砾。但是這個功能的快捷鍵不知道和什么東西沖突用不出來,而且這么多年也沒有修復[^SnippetBug]托酸。不過如果你想用的話還是可以通過 Ctrl+Shift+P 的按鍵組合呼出 Command Palette 然后鍵入 Snippets: Insert Snippet 來選擇預制的格式化代碼段來插入褒颈。

渲染預覽

Markdown Language Features 這個插件則專門提供 Markdown 的渲染和預覽功能。其 ID 是:

vscode.markdown-language-features

當你以 Markdown 模式打開一個文本時右上角有一個預覽圖標励堡,點一下就能進入左右分欄模式谷丸,右邊顯示渲染預覽,左邊顯示 Markdown 源碼应结。

渲染的樣式是通過內置的 CSS 決定的淤井,不過這個插件也提供了一些設置選項可以控制渲染的樣式,例如渲染后頁面的字體就是獨立于 VS Code 的代碼字體單獨設置的摊趾。此外這個插件提供的渲染頁面的顏色主題會隨著 VS Code 的顏色主題變化币狠。如果你不喜歡這個渲染結果也可以找其他插件來改變渲染樣式。

關于這個內置插件砾层, VS Code 的插件頁面介紹不多漩绵。翻翻源碼就不難發(fā)現(xiàn),這個渲染插件其實是調用 markdown-it 實現(xiàn)的肛炮。 markdown-it 是基于 CommonMark 標準設計的止吐,但是默認做了一些拓展。例如默認加入了 GitHub Flavored Markdown 的表格和刪除線語法侨糟。因此這個插件相當于自帶了表格和刪除線的擴展語法碍扔。

寫給程序員的一些額外信息

對于一般用戶來說,對 Markdown 的編輯和渲染主要在各種面向最終用戶的編輯器中進行秕重。但是對于程序員來說不同,了解一點和代碼相關的信息總沒有壞處,

現(xiàn)在的 Markdown 編譯工具非常多溶耘,最初 Markdown 設計者推出的那個 Bug 滿滿 的版本已經(jīng)越來越少用了二拐。一般推薦使用 JS 庫 markdown-it 來將 Markdown 編譯為 HTML (如果覺得這個庫提供的語法功能不夠,還可以使用各種拓展庫來拓展它)凳兵。以下是一個調用 markdown-it 編譯 Markdown 的代碼示例(用 JS 寫的):

md=require('markdown-it')()
mytext='# hello\nI\'m**TaiXuan**'
myhtml=md.render(mytext)
console.log(myhtml)

此外百新,也可以使用命令行工具 Pandoc 來實現(xiàn) Markdown 對其他文本的轉化。以下是一個 shell 命令示例:

pandoc -s mytext.md -o myhtml.html

Typora 在將 Markdown 導出為其他文件格式時是依賴 Pandoc 的庐扫。


本文源碼采用 MIT 協(xié)議開放饭望,托管于: https://github.com/ZhiZe-ZG/ZZToolLibrary

如果覺得本文內容對您有用仗哨,希望您能在能力和意愿范圍內給我一些資助。我不以此為生铅辞,但我也是個普通人厌漂。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市巷挥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌验靡,老刑警劉巖倍宾,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胜嗓,居然都是意外死亡高职,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門辞州,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怔锌,“玉大人,你說我怎么就攤上這事变过“T” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵媚狰,是天一觀的道長岛杀。 經(jīng)常有香客問我,道長崭孤,這世上最難降的妖魔是什么类嗤? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮辨宠,結果婚禮上遗锣,老公的妹妹穿的比我還像新娘。我一直安慰自己嗤形,他們只是感情好精偿,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赋兵,像睡著了一般还最。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毡惜,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天拓轻,我揣著相機與錄音,去河邊找鬼经伙。 笑死扶叉,一個胖子當著我的面吹牛勿锅,可吹牛的內容都是我干的。 我是一名探鬼主播枣氧,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼溢十,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了达吞?” 一聲冷哼從身側響起张弛,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酪劫,沒想到半個月后吞鸭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡覆糟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年刻剥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滩字。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡造虏,死狀恐怖,靈堂內的尸體忽然破棺而出麦箍,到底是詐尸還是另有隱情漓藕,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布挟裂,位于F島的核電站撵术,受9級特大地震影響,放射性物質發(fā)生泄漏话瞧。R本人自食惡果不足惜嫩与,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望交排。 院中可真熱鬧划滋,春花似錦、人聲如沸埃篓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽架专。三九已至同窘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間部脚,已是汗流浹背想邦。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留委刘,地道東北人丧没。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓鹰椒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親呕童。 傳聞我的和親對象是個殘疾皇子漆际,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內容