為什么會寫這樣的一個主題,最主要的痛點來自于以下兩個方面。首先,立志經(jīng)常寫博客的我,希望能擁有優(yōu)雅地寫作體驗和得心應手的編輯環(huán)境,而對于經(jīng)常碼代碼的我來說最喜歡的編輯器莫過于Sublime,這個在業(yè)界被贊譽無數(shù)皇冠加冕的神器,讓你遇見就會產(chǎn)生恨晚的感覺,那么自然而然就需要建立一個基于Sublime的舒暢的Markdown編輯環(huán)境。再者,我需要在多終端編輯自己的博客,例如我在公司的PC上寫了一篇博客,當我回到家的時候,仍然希望繼續(xù)完成剛才的那篇博客,而如果每次都需要用硬盤來回復制粘貼拷貝,那簡直如同回到了石器時代一樣low的不得了,這時就需要一個舒適好用便捷的云同步的解決方案來搞定它。基于此,我花了一些時間解決了這些問題,也應運而生了這篇文章。
至于為什么要用Markdown來編輯,網(wǎng)上已經(jīng)有無數(shù)關(guān)于Markdown的介紹和贊譽,同時對于經(jīng)常混跡于全球最大同性交友網(wǎng)站GitHub的碼農(nóng),Markdown是必不可少的技能。而且Hexo天生集成了Markdown,因此我們可以采用這樣的語法來編寫博客。Markdown簡單的語法易用的規(guī)則,可以使我們更加專注于內(nèi)容的編寫,同時自動生成極為美觀的排版,總之,帶給我們良好的編輯體驗。當然,Markdown的編輯器有很多很多,對于純碼字的文字工作者而言,大可選擇更為簡單方便的編輯器,這里有一篇文章可供參考(好用的Markdown編輯器一覽),但是對于程序員而言,最好的就是Sublime!
構(gòu)建基于Sublime的良好的Markdown編輯環(huán)境
1. Sublime主題的選擇
選擇一款自己喜歡的主題配色可以讓我們工作的時候更加的愉悅,效率也更高。我自己選擇的主題是Material Theme, 這個在GitHub上獲得6000+Star的精品,它的大概配色如下圖所示(官方配圖)
一開始選擇Material Theme這個主題,完全是因為它的名字,因為我是一名Android開發(fā)者,所以對Google的Material Design有一種不能抗拒的感覺,雖然這兩者之間似乎除了名字相同之外沒有任何關(guān)系,但我還是喜歡上了它。
前人種樹,后人乘涼,這里有一篇關(guān)于Sublime 主題推薦的文章:Sublime插件:主題篇
2. 插件的安裝
Sublime 擁有非常好的擴展性,因為使用之廣泛,因此全球有很多的開發(fā)者為其開發(fā)了大量優(yōu)秀的第三方插件,而如何安裝卸載和管理第三方的插件,就需要 Package Control 這款插件,安裝的方法如下鏈接:Package Control Install。
之后就可以進行第三方插件的安裝了,Ctrl+Shift+P 之后打開命令板,輸入 Package Control:Install Package,選擇確認之后,就可以打開選擇安裝第三方庫的面板,例如要安裝上面的 Material Theme 主題,輸入 Material Theme 之后選擇即可安裝。
3. Markdown編輯環(huán)境插件:Markdown Editing
Markdown Editing 是一款側(cè)重于Markdown語法編輯的插件,它主要有以下的一些特點:
- 更好的句法理解,
- 更好的著色方案以及代碼高亮
- 實用的Markdown編輯特性,即對插入圖片,鏈接,角標,引用,標題等等,有快捷鍵的實現(xiàn)
- 支持 Standard Markdown, GitHub flavored Markdown, MultiMarkdown 三種語法
官方給的配圖是這樣子的
但是偏白色的背景讓我感覺很別扭,與剛才設定的主題相差太大了,不能忍啊~ 好在這個也是可以修改自定的,在 Sublime 菜單欄打開 Preferences > Package Settings > Markdown Editing > Markdown GFM settings - User 添加以下的代碼,設置成我們自己喜歡的主題配色
{
"color_scheme": "Packages/Material Theme/schemes/OLD/Material-Theme.tmTheme",
}
4. Markdown預覽插件:主要有兩個 OmniMarkupPreviwer 和 MarkdownPreview
通常我們還有需要預覽用Markdown語法編寫的文章的最終排版的需求,以上提到的兩個插件實現(xiàn)了這樣的功能。OmniMarkupPreviewer 插件的使用命令如下:
Ctrl+Alt+O: Preview Markup in Browser.
Ctrl+Alt+X: Export Markup as HTML.
Ctrl+Alt+C: Copy Markup as HTML.
MarkdownPreview的編譯指令為
Ctrl + B
之后會在同樣的文件夾下生成html的文件,打開即可預覽效果。如果更改了文章,需要再次編譯,打開才能看到更改的效果。
以上兩者之間的區(qū)別主要有這幾個方面:
- 前者可以進行實時的預覽,后者不可以,后者需要先進行編譯生成HTML文件,再查看。
- 前者很多語法格式無效果,后者均有,例如,目錄的生成,參考角標的生成,待辦事項的顯示等等。
總結(jié),前者可以實現(xiàn)文本的實時更新,后者可以更加完整有效的顯示Markdown的語法格式。
至此,基于Sublime的Markdown的編輯環(huán)境已經(jīng)搭建完成。
文檔云端自動同步的方案
關(guān)于云端同步,我的核心需求是,可以無需去操心所有的要同步的操作,當我在一個終端編輯好之后,不再需要做任何別的事情,文件會自動同步到我的另一個終端,而比如百度云盤則需要手動上傳下載。這也正是我上面提到的需要在公司和家里都編輯同一份博客的需求。這里有以下的兩種解決方案
一、Dropbox
Dropbox 是最實用的文件同步工具,能夠?qū)⒋鎯υ诒镜氐奈募詣油降皆贫说姆掌鳌5橇钊诉z憾的是,這款軟件的服務在國內(nèi)無法使用,必須要科學上網(wǎng)才行。而作為程序員需要經(jīng)常的科學上網(wǎng),所以這對我來說是可以接受的。Dropbox需要申請一個個人賬號,之后安裝相應的客戶端,如Windows端,Dropbox會創(chuàng)建在 $env:userprofile\Dropbox 路徑下的一個文件夾,而你需要把希望同步到云端的所有文件,放在這個文件夾中,并保持處于科學上網(wǎng)的狀態(tài)下,即可自動同步到Dropbox云端。同時,在另一臺終端登錄相同的Dropbox賬號,即可自動將云端的文件同步到本地。
1. 同步Sublime的配置
首先碰到的一個問題是,要在多終端使用Sublime,但是又希望我們在一個電腦上更改的配置能自動同步到另一臺電腦。這時便可以采用Dropbox的方案,具體實現(xiàn)如下。在 Sublime 菜單欄打開 Preferences > Browse Packages... 打開Sublime的文件夾,將Users的文件夾剪切到Dropbox目錄(如Windows平臺的$env:userprofile\Dropbox)下,再在剛才的Sublime文件夾下創(chuàng)建一個User的文件夾,符號鏈接到Dropbox下的User文件夾,其中Windows下創(chuàng)建符號鏈接的命令如下:
cmd /c mklink /D 帶鏈接符號的文件夾 目標文件夾
比如,先命令行進入剛才打開的Sublime文件夾下,然后創(chuàng)建符號鏈接的命令如下:
cmd /c mklink /D User $env:userprofile\Dropbox\User
這是一種值得借鑒的方式,你想同步的任何軟件的任何配置文件,都可以采用符號鏈接的方式進行,將真正的文件存儲在Dropbox文件夾下,再在它原來需要出現(xiàn)的位置,創(chuàng)建符號鏈接指向Dropbox下的相應的文件,即可實現(xiàn)文件的自動云端同步。
2. Hexo博客博文的云端同步
借鑒以上創(chuàng)建符號鏈接的方式,在Hexo博客的根目錄下,將source文件夾放在Dropbox目錄下,再在原Hexo博客根目錄下創(chuàng)建source文件夾到Dropbox文件夾下source文件夾的符號鏈接,即可實現(xiàn)云端自動同步博客所有資源的方案。從此便可隨心所欲的在公司和家里操作編輯同樣一份博文嘍。
同時,Dropbox在移動端也有相應的產(chǎn)品,我在我的Android手機安裝了Dropbox的客戶端,這樣就可以在隨時隨地查看我編輯的博文,而博文是Markdown文件,可以下載MarkdownX的一款App,這是一款在移動端非常棒的可以查看預覽編輯Markdown文件的應用,最重要的是,它可以和Dropbox聯(lián)動!!!
云端同步的全套解決方案搭建完成。
二、Sublime + Evernote(印象筆記)
云端同步的另一個方案的出發(fā)點是這樣的。我習慣每日會寫工作日報,包括自己當天的工作計劃,工作總結(jié),學到的內(nèi)容,一些感悟等等。我希望可以在 Sublime 中編輯它,而且它能夠自動同步到移動端和另一臺電腦,使我可以隨時隨地的查看和編輯。當然使用第一種方案也是可以的。但是這個需求的核心是我需要的是筆記的同步,而不需要同步文件,因此我更喜歡用專業(yè)的云端筆記產(chǎn)品。而在國內(nèi)知名度很高的有道云筆記,我之所以沒有選擇它,是因為沒有和Sublime聯(lián)動的插件可以供我使用,我無法在Sublime中去編輯我的工作日報,只能在有道云筆記的客戶端編輯,而且客戶端暫不支持Markdown編輯,因此還要考慮排版云云,啊,簡直不能忍!選擇印象筆記就是因為這款在Sublime上的插件:Evernote。這使得我可以直接在Sublime中創(chuàng)建一個新的工作日報,并且以Markdownd的語法去編寫,之后同步到印象筆記,自動生成排版,體驗實在太棒啦!下面就來看如何搭建這套方案
1. 安裝 Evernote 插件
在Sublime中按 Ctrl+Shift+P 打開命令板,輸入 Package Control:Install Package 打開下載倉庫,輸入 Evernote 下載安裝。
2. 連接Sublime到你的印象筆記賬號
第一次使用Evernote需要連接你的賬號,訪問該網(wǎng)站 https://app.yinxiang.com/api/DeveloperToken.action 獲取到你的賬號對應的Token,這個Token就是你的賬號的認證標志,所以要切記保密,任何人拿到這個Token就如同拿到你的密碼一樣,可以進行你印象筆記中的任何操作。獲取到Token之后,打開 Sublime 菜單欄中 Preferences > Package Settings > Evernote > Settings-User 鍵入上述網(wǎng)頁所顯示的 noteStoreUrl 和 token 字段。保存,并重新啟動 Sublime ,完成賬號的關(guān)聯(lián)。
{
"noteStoreUrl": "your noteStoreurl XXX",
"token": "your token XXX",
}
3. 使用 Evernote
可以通過 Ctrl+Shift+P 打開命令板,鍵入 Evernote 就會出現(xiàn)所有的關(guān)于Evernote插件的指令,常用的指令包括
Command Palette > Evernote: New empty note
Command Palette > Evernote: Open Evernote Note
Command Palette > Evernote: Send to Evernote
Command Palette > Evernote: Update Evernote Note
以上指令的詳細解釋,可參照 Evernote 的官方 GitHub:Evernote
當然,我們可以直接設置快捷鍵完成相應的操作。在Sublime的菜單欄中打開 Preferences > Key Bindings - User 鍵入以下的設置
[
{ "keys": ["ctrl+e", "ctrl+p"], "command": "show_overlay", "args": {"overlay": "command_palette", "text": "Evernote: "} },
{ "keys": ["ctrl+e", "ctrl+o"], "command": "open_evernote_note" },
{ "keys": ["ctrl+s"], "command": "save_evernote_note", "context": [{"key": "evernote_note"}, {"key": "evernote_has_guid"}] },
{ "keys": ["ctrl+s"], "command": "send_to_evernote", "context": [{"key": "evernote_note"}, {"key": "evernote_has_guid", "operator": "equal", "operand": false}] },
]
以上快捷鍵的解釋,第二個設置表示,連續(xù)按 "ctrl+e", "ctrl+o" 會在Sublime中打開云端的印象筆記,可以進行相應的文件夾和文件的選擇,確認即可打開。第三個設置表示,在打開的是一個印象筆記文本的情況下,按"ctrl+s"可以直接保存到云端。第四個設置表示,如果是一個新建的筆記(例如通過 Command Palette > Evernote: New empty note 命令在 Sublime 中新建的一個筆記),還沒有在云端,按"ctrl+s"可以將此筆記發(fā)送到云端。
4. 建立模板
每次新建一個文件,我們可能需要一些模板,這是可以實現(xiàn)的。在 Sublime 的菜單欄打開 Preferences > Package Settings > Evernote > Settings-User 鍵入以下的字段
"default_template": "Packages/User/EvernoteNote.md",
然后打開 Preferences > Browse Packages... 打開User文件夾,新建一個EvernoteNote.md文件作為一個模板,需要注意的是,需要把這個文件轉(zhuǎn)換為UNIX格式,才能正常的使用。
5. 注意事項
在印象筆記的如上使用過程中,發(fā)現(xiàn)一個非常嚴重的問題,就是如果我本地的一個 Markdown 在 Sublime 中打開編輯,之后發(fā)送到云端,如果直接在打開的這個文件繼續(xù)編輯保存,是可以繼續(xù)上傳到云端的,而假如我此時在 Sublime 中關(guān)閉這個本地的文件,再次打開,此時系統(tǒng)將無法確認這個文件是和云端的印象筆記的某個文件是關(guān)聯(lián)的,也就是說,這個時候,你無法再將新的更改添加到剛才的那個云端筆記中,只能重新發(fā)送一個相當于新的筆記到云端。這是一個非常不好的體驗和痛點,我也在開發(fā)這款插件的作者的Github中看到了有關(guān)這個問題的討論,可能因為確實十分棘手,作者最終并沒有給出解決方案。
而我們可以通過改變我們的使用方式來繞開以上的痛點。使用流程如下,先通過 Command Palette > Evernote: New empty note 新建一個筆記,定義好我們筆記的文件名和所在的文件夾,保存這個筆記,相當于發(fā)送到云端,這時我們就可以編輯了,當編輯完成關(guān)閉之后,下次通過 Command Palette > Evernote: Open Evernote Note 命令直接打開云端的一個筆記進行修改和編輯,這很好的解決了本地文件與云端文件的關(guān)聯(lián)問題。
總之,核心的思想就是,不在本地進行編輯,只編輯云端。Sublime只是一個用來編輯云端筆記的編輯器,真正的存儲位置就是在云端。
以上的所有關(guān)于 Evernote 的設置可以參考 Evernote 的GitHub主頁。
至此,Sublime + Evernote 的云端同步方案搭建完成,可以享受暢爽的多端同步筆記了。在公司電腦寫的工作日報,可以直接在家里PC和手機端進行查看和編輯,從此走向人生巔峰~~~