一个新的markdown编辑器

前言

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

不同的markdown编辑器比较

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

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

我的markdown编辑器

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

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

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

基本特性

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

公式特性

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

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

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

代码特性

比如写一个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树还原原有的文本,这一部分需要自己解析,暂时没有精力做。目前编辑器是不支持嵌套结构的。

软件试用地址:

下载地址

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值