markdown 编辑器_一个新的markdown编辑器

前言

最近一段时间没有更新文章,因为业余时间都在写一个markdown编辑器。市面上有很多各种各样的编辑器,但是或多或少存在一些问题,对于一个轻度强迫症患者而言,在使用了一些编辑器后,还是转为自己手写了一个简单的markdown编辑器。

不同的markdown编辑器比较

个人感觉使用最方便的编辑器是Typora,因为是实时编辑和预览的,也就是说,不需要额外的预览界面。但是Typora也存在一些问题,比如不能实时同步数据,我们可以使用一些同步工具来做,但这样毕竟还是需要额外的工作。另外一点是Typora是采用JavaScript写的web程序,有时候会感觉比较卡,特别是程序开的比较多的时候。

至于别的markdown编辑器,之前用的比较多的是印象笔记的马克飞象,还买了一年的套餐。但是发现自己其实对每次打开网页并不感冒,总的来说,很多web版本的markdown编辑器都存在类似的问题,另外就是需要开一半的区域作为预览界面。

我的markdown编辑器

先上图:

2ecd7ad5bc886e5884eb155795cf02db.png

1fba9ce09383ec5f3daf708ab81af929.png

如果能够结合Typora/数据实时同步/快速高效零卡顿这几个特性,才算是我心目中的比较好的markdown编辑器吧。

于是才有了现在这个软件。

我大概花了一周时间(也就是上周),从脑海中有一个大体框架,到一步步解决各种奇葩问题和bug,实现了几个程序员写作专用的特性。

基本特性

首先是最基本的加粗/斜体/删除特性。

公式特性

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

这个特性还需要稍微调整一些大小,现在只是实现了核心功能。

代码特性

比如写一个hello world

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

图片特性

截图直接复制或者从文件复制,或者从网页复制图片f3f16f27b6c49de7f0297df58273e3b9.png

实时保存特性

由于本人是游戏程序出生,本软件其实和王者荣耀一样数据是实时同步服务器的,并且支持离线存储,加载文章不需要从服务器拉取数据。修改文章也不需要自己保存,会自动保存到本地和远端数据库。

编辑器的实现

编辑器使用的是桌面开发库QT,采用的是最基本的QPlainTextEdit控件进行开发,因此也使得该编辑器非常高效和精简,不会出现卡顿现象。代码行数也就两千行左右,比较容易修改和维护。之前考虑过采用web方式,但是感觉很笨重,而且修改起来难度极大,代码太多有bug的话完全伤不起。

QT库也存在一些问题,而且是官方bug,特别是代码字体,不能和中文字体区分开,中文字体是微软雅黑,英文应该是Consolas,现在都是微软雅黑,这是5.13版本回退bug。

开发过程中最大的问题是QT上面的问题,特别是控件刷新问题,很多时候文档根本没什么用,只能从QT源码堆里面到处翻答案。开发过程中算法也很重要,编辑器最麻烦的地方并没有解决,那就是markdown标签的嵌套问题,这个问题和浏览器的DOM树形结构类似,但是我们这个实时编辑器可能更复杂一点,因为我们需要从这颗DOM树还原原有的文本,这一部分需要自己解析,暂时没有精力做。目前编辑器是不支持嵌套结构的。

结语

不过对于这个编辑器,我自己已经比较满意了,后面写文章也都会使用这个工具。一周时间没有做题了,本周开始继续。

e37891725f16af0a6c1e2933a27cbb7b.gif

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注ACM算法日常

35590f45f1917cbb1b3a05fec6dda19f.png

点赞的时候,请宠溺一点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值