前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个新的markdown编辑器

一个新的markdown编辑器

作者头像
ACM算法日常
发布2019-09-06 11:42:48
8870
发布2019-09-06 11:42:48
举报
文章被收录于专栏:ACM算法日常ACM算法日常

前言

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

不同的markdown编辑器比较

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

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

我的markdown编辑器

先上图:

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

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

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

基本特性

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

公式特性

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

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

代码特性

比如写一个hello world

代码语言:javascript
复制
#include <stdio.h>

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

图片特性

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

实时保存特性

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

编辑器的实现

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

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

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

结语

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ACM算法日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 不同的markdown编辑器比较
  • 我的markdown编辑器
    • 基本特性
      • 公式特性
        • 代码特性
          • 图片特性
            • 实时保存特性
            • 编辑器的实现
            • 结语
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档