一個新的markdown編輯器

前言

最近一段時間沒有更新文章,因爲業餘時間都在寫一個markdown編輯器。市面上有很多各種各樣的編輯器,但是或多或少存在一些問題,對於一個輕度強迫症患者而言,在使用了一些編輯器後,還是轉爲自己手寫了一個簡單的markdown編輯器。

不同的markdown編輯器比較

個人感覺使用最方便的編輯器是Typora,因爲是實時編輯和預覽的,也就是說,不需要額外的預覽界面。但是Typora也存在一些問題,比如不能實時同步數據,我們可以使用一些同步工具來做,但這樣畢竟還是需要額外的工作。另外一點是Typora是採用JavaScript寫的web程序,有時候會感覺比較卡,特別是程序開的比較多的時候。

至於別的markdown編輯器,之前用的比較多的是印象筆記的馬克飛象,還買了一年的套餐。但是發現自己其實對每次打開網頁並不感冒,總的來說,很多web版本的markdown編輯器都存在類似的問題,另外就是需要開一半的區域作爲預覽界面。

我的markdown編輯器

如果能夠結合Typora/數據實時同步/快速高效零卡頓這幾個特性,纔算是我心目中的比較好的markdown編輯器吧。

於是纔有了現在這個軟件。

我大概花了一週時間(也就是上週),從腦海中有一個大體框架,到一步步解決各種奇葩問題和bug,實現了幾個程序員寫作專用的特性。

基本特性

首先是最基本的加粗/斜體/刪除特性。

公式特性

比如方程 f(x)=1+x2f(x) = 1+x^2

這個特性還需要稍微調整一些大小,現在只是實現了核心功能。

使用$$符號是整行居中的公式:
i=1nai=0\sum_{i=1}^n a_i=0
f(x1,xx,,xn)=x12+x22++xn2f(x_1,x_x,\ldots,x_n) = x_1^2 + x_2^2 + \cdots + x_n^2

代碼特性

比如寫一個hello world

#include <stdio.h>

int main()
{
    printf("hello world");
    return 0;
}

圖片特性

截圖直接複製或者從文件複製,或者從網頁複製圖片。
image

實時保存特性

由於本人是遊戲程序出生,本軟件其實和王者榮耀一樣數據是實時同步服務器的,並且支持離線存儲,加載文章不需要從服務器拉取數據。修改文章也不需要自己保存,會自動保存到本地和遠端數據庫。

編輯器的實現

編輯器使用的是桌面開發庫QT,採用的是最基本的QPlainTextEdit控件進行開發,因此也使得該編輯器非常高效和精簡,不會出現卡頓現象。代碼行數也就兩千行左右,比較容易修改和維護。之前考慮過採用web方式,但是感覺很笨重,而且修改起來難度極大,代碼太多有bug的話完全傷不起。

QT庫也存在一些問題,而且是官方bug,特別是代碼字體,不能和中文字體區分開,中文字體是微軟雅黑,英文應該是Consolas,現在都是微軟雅黑,這是5.13版本回退bug。

開發過程中最大的問題是QT上面的問題,特別是控件刷新問題,很多時候文檔根本沒什麼用,只能從QT源碼堆裏面到處翻答案。開發過程中算法也很重要,編輯器最麻煩的地方並沒有解決,那就是markdown標籤的嵌套問題,這個問題和瀏覽器的DOM樹形結構類似,但是我們這個實時編輯器可能更復雜一點,因爲我們需要從這顆DOM樹還原原有的文本,這一部分需要自己解析,暫時沒有精力做。目前編輯器是不支持嵌套結構的。

軟件試用地址:

下載地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章