UltraBlog.vim開發手記

| Comments

對于博客已死的說法,我一點都不感到奇怪。早在幾年前博客還比較火的時候我就表達過對博客泡沫的看法

經歷了短暫的tumblog的風頭,微博成為現在最火的媒介。說博客已死,無非就是說微博將成為個人信息傳播的主流。好吧,現在我知道那時候我所說的不懂什麽是博客的人都去幹什麽了。

但是博客還是會繼續發展,微博的興起只會減少濫竽充數。因為微博突出的是時效性,最缺乏的是系統性和可重復更新的能力。微博的短處,正是博客的長處。這讓我對博客有了一個新的、遲到了很久的認識──一個好的博客,它的文章不應該是寫掉就忘的,而應該是不斷地更新著的。

UltraBlog.vim就是出于這個需要而寫的。

我對博客客戶端的使用大概可以追溯到四五年前,那時候博客正火,在比較了幾個BSP後選擇了中國博客網,就是因為他們提供桌面客戶端。後來獨博之後也試用過幾個通用的客戶端,但都沒堅持多久,最根本的原因是它們幾乎無一例外地都是WYSIWYG。而WYSIWYG的編輯器生成的HTML源碼幾乎都使用inline的樣式,這就導致文章的排版布局很難控制,我對WYSIWYG其實是很抵觸的,至今都不怎麽用Office這類東西。

後來我意識到,我所需要的是樣式與內容分離,于是準備自己寫一個客戶端,後來由于工作的原因不了了之。與此同時,我自定義了一套文章格式并用Java寫了一個轉換文章到HTML的工具,直到後來發現Markdown,我才知道我其實是需要一個輕量标記語言。

使用Markdown之後,寫博客開始變得輕松愉快。我一度用過一段時間SciTE,還用Lua寫了個輔助腳本。但是我需要一個完整的客戶端來管理文章,而這是一個編輯器所不能勝任的,所以就著手實現一個支持Markdown的客戶端。這一次走得比較遠,ForeverFantasy最終達到了可用的程度,我一度用它寫過一段時間的博客。但是作為一個Vim重症患者,wxPython的編輯器部件是遠遠達不到我需要的水平的。雖然後來還實現了調用外部程序處理文章內容(當然也可以調用Vim),但總歸覺得不舒服,至今已經一年沒更新了。

直到前段時間試用了一下VimRepress,在修改這個插件的時候突然受到啟發,我這幾年的需求原來是可以這麽簡單地解決的。

其實在幾年前vimpress剛剛發布的時候我就了解過這個東西,包括此後接連發布的幾個Vim寫博客的插件,它們和我原來寫的SciTE的那個輔助腳本沒有本質的區別,都是博客編輯器。與完整的客戶端相比,編輯器缺少對本地文章源碼的管理,而且它們不記錄文章源碼和發布的文章的關聯關系,簡單地說是無狀態的。這不符合博客文章持續更新的觀點。

UltraBlog.vim使用SQLAlchemy做數據庫抽象層,將所有文章的源碼及其狀態保存在本地的一個SQLite數據庫中,并且以此為基礎,通過XMLRPC接口實現對博客文章、頁面的CRUD操作。同時利用Vim分模式的特點實現了可分頁的文章列表和文章編輯視圖。

UltraBlog.vim目前支持Markdown和HTML兩種格式的文章,它最大的特點是在Markdown格式的源碼和發布到博客中的文章之間建立聯系,你可以隨時修改本地數據庫中的Markdown源碼并更新博客中對應的文章。

新的功能還會不斷地加入。

Posted via UltraBlog.vim.

Comments