前幾天為了在 Windows XP 下用 Markdown 格式寫文檔做了一點 survey,重新發現 Atom 這套編輯器可能是個不錯的工具,所以在家裡的 Mac 機器上做了一些設定,拿來取代原先用 Evernote 來寫作的方法。
Atom 原本就有內建 markdown-preview 這個套件,可以做到 live preview(如下圖 1),光這點就比 Sublime Text 好很多,再裝上 markdown-scroll-sync 套件,讓 preview 的視窗可以和編輯區同步捲動(如下圖 2):
▲ 【圖 1】markdown-preview 套件已經將 Live Preview 預設開啟,另外我個人比較喜歡 GitHub style,所以也勾選
▲ 【圖 2】markdown-scroll-sync 套件作用的情形(圖片出自 mark-hahn/markdown-scroll-sync 的 GitHub page)
這樣一來基本上就已經可以做為一個不錯用的 Markdown 編輯器了,不過按照原先的設定可能還不夠完美,建議再做以下的調整。
內建 language-gfm 的 syntax highlighting 有問題
Atom 的 Markdown syntax highlighting 是透過 atom/language-gfm 這個官方的套件來支援,但它用的 grammar 感覺不是很完整,例如在中英混合的文章裡會顯示錯誤(其實主要是沒有在斷字點上):
▲ 內建的 language-gfm 無法正確的做 highlighting 的一些案例
本來想自己追看看有沒有辦法改出合用的 grammar 順便送一個 pull request 給他們,但又覺得不是那麼容易一蹴可幾,剛好又發現有人已經做好另一個 Markdown 的 grammar: burodepeper/language-markdown(如下圖)
▲ language-markdown 的 syntax highlighting 比較完整一些,但仍有一些問題,另外它的 color scheme 也比較不優,header 沒有 highlight 出來
一般寫 code 並不希望句尾有一些額外多出來的 whitespace, 在 Atom 中是由內建的 atom/whitespace 套件來進行移除,但 Markdown 有時會需要句尾的 whitespace 來做強制換行的動作,所以這個套件有選項可以設定:
▲ atom-whitespace 套件可將 trailing whitespace 移除,如果搭配官方 language-gfm 套件還可排除 markdown 文件
不過改用了 language-markdown 以後,這個 remove trailing whitespace 的功能就失效了,要額外針對特定副檔名做排除的動作,在 Atom
> Config...
中加入:
'.md': whitespace: removeTrailingWhitespace: false
atom-markdown-table-formatter 這個 package 可以利用快速鍵的方式或是在存檔的時候,讓 table 排得比較美觀些,但搭配 language-markdown 後,會因為 grammar 和原本的 language-gfm 不同,無法作用,可在 formatter 的 grammar setting 裡加上 source.gfm, source.litcoffee, text.html.basic, text.md, text.plain, text.plain.null-grammar
(這是 markdown-preview 的預設值,而 markdown-table-formatter 原本只有 source.gfm
)
搭配雲端同步服務
之所以會直接在 Evernote 上寫作主要是看上它會自動同步內容,不管是在家裡還是辦公室都可以編寫最新的資料,如果改用 Atom 也可以搭配其他的雲端同步服務,例如 Dropbox 等等,我個人是利用家裡的 Synology Cloud Station 來做私有雲。
可做為跨平台的方案
▲ 上圖為 Atom,下圖為 MacDown
設定至此,Atom 已經和一般的 Markdown 編輯器相差不遠,基本的功能都有了,和我之前用的 MacDown 相比,除了 syntax highlighting 比較差些(但我相信 language-markdown 會持續改善),preview 的效果幾乎是一模一樣,而 Atom 更大的優勢在於其跨平台的特性,不論在 Mac, Linux, Windows (除了 XP) 都可以用同一套環境,或許以後都會以它為主力了吧!
Pingback: 調配用於 language-markdown 的 Syntax Highlighting | I-Ta Tsai's Blog