【开发者自荐】MarcDown - 极简,上下分栏的md编辑器

软件名称

MarcDown - 上下分栏的md编辑器

应用平台

  • Windows
  • MacOS
  • Linux

是否收费

开源免费

软件截图


应用简介

MarcDown是一款独特的上下分栏的Markdown编辑器,所谓上下分栏,就是源码在上面,渲染结果放在下面,支持表格,图片,公式,流程图,HTML的上源码下渲染,源码还可以一键折叠,从而使整个页面尽可能的“所见即所得”,同时也能很方便地查看/修改源码。

MarcDown并不是纯粹的“所见即所得”,而是将样式与源码渲染在一起的“实时渲染”,例如“—”分割线,其背景是一整条编辑器宽度的线,但仔细看分割线的左端仍然还有“—”的源码。

MarcDown的目标就是作为系统默认的md查看器,点击md文件,然后触发MarcDown,在替换掉默认的txt记事本的同时,有着跟txt记事本一样的简洁/快速,而且还有txt记事本没有的实时渲染能力,可以在同一个上下文中方便浏览图片,公式,流程图等渲染结果。

MarcDown的所有功能都是手工实现的,理论上实现一个md编辑器挺简单,只需要以CodeMirror库之类的为核心包一层即可。但MarcDown这里相当于实现了一遍CodeMirror,MarcDown的主打特性是上下分栏,对页面高度的控制有更精细的要求,用CodeMirror不太能满足需求,因此我手撕了从源码解析到排版渲染的整体流程,当然我在开发过程中大量使用了AI,AI确实提高了我的能力上限。

我借鉴React的原理,将MarcDown的排版渲染分为reconcile调和过程和commit提交过程,调和过程只处理js逻辑,将新旧虚拟节点进行diff,在commit提交过程根据diff做真实Dom的最小改动,听起来性能不错,但实际上目前仍有不少逻辑还未做性能优化,普通的readme.md文件可以轻松打开,md文件超过一万行编辑就比较卡了。如果把可优化项做完的话,实时编辑一万行的md文件应该能达到流畅水准。

官网:MarcDown

github: Github

跪求star!

我有一问:上下分类比左右分栏更适合电脑屏幕么

官网打错了,应该是 https://macrdown-page.vercel.app

目标人群大概就是

  • 不喜欢左右分栏
  • 更想看到/编辑源码
  • 同时也想看到渲染结果

这样的目标用户吧

省流:Tauri+react,代码无注释,有针对代码文件的md解释,无i18n。

注:此评论不代表任何立场,仅省流

发布了一个新版本,修复了一些bug,优化了性能。
我发现了一个解析速度超快的md解析器satteri,rust写的,运行速度比js写的解析器快十倍:

测试文件大小 937.8 KB(960256 bytes,约3万行)

指标 mdast (老牌md解析器) satteri (用Rust写的md解析器)
平均耗时 1003.37 ms 9.43 ms
节点数 54785 64001

MacrDown接入了satteri,现在编辑上万行的md文件也挺流畅的了

其实对于查看文档,尤其是在电脑这种宽屏显示器上,这种上下分栏并不合理。

  1. 上下分栏会使得每个页面的高度减小。遇到列表等 每行不长,但有很多行 的文本,需要频繁滚动,增加额外操作。
  2. 上下分栏也会导致文本显示区过长,看一段文本可能需要左右转头,而且过长的文本看起来也不方便,容易串行。
  3. 对于源代码和预览分开的编辑器,传统的左右分栏的一个优势是:如果想看某端代码的渲染效果,只需看另一栏中相同高度的地方即可。而如果是上下分栏,找起来就没那么方便。

我感觉还好吧,一般理想的用法是这样的:

例如这里的块级公式,所见即所得类md编辑器点击公式直接变成源码,看不到渲染结果了;左右分栏则其他地方的源码和渲染结果重复展示,浪费了空间。

所以我想解决的问题其实是:希望有些内容按照所见即所得的方式展示,例如标题行,普通文本行;有些内容按照分栏展示,例如块级公式,表格,流程图。所以采用了上下分栏的方式,这是我的一个解法。

也不是单纯的上下分栏,而是将渲染结果混排进了源码里,源码也可以一键折叠,对于太长的表格,建议直接折叠源码看表格渲染结果,如果需要编辑,那就只能展开源码当一个纯源码编辑器用了。

1 个赞

原来如此。不过这种不应该叫 “上下分栏”,因为严格意义上,您的软件中并没有出现分栏。

为避免歧义,可以考虑叫 “就地预览”。

另外,您的编辑器中,表格的源代码和渲染后的表格都会显示。遇到长表格时,其实也是非常浪费空间的:

找了个文档测试了一下,情况如下:

  • 测试版本是 v0.1.0,amd64,deb 版。
  • 打开一个测试文档,占用内存 161.7 MB。

发现的问题:

  1. 汉字看起来特别粗,不知道是不是软件调用字体,或渲染文字时,出了什么问题。
  2. 不支持 HTML 标签。(有些 HTML 标签还是很有用的,比如上下标)。
  3. 点击标题时,会跳转到该标题的下一行。
    比如我点击 “CommonMark”,会跳转到:

    可在其他编辑器中,一般是跳转到标题那个位置,比如 VNote中:

此外,这个 deb 版本的打包也有一些问题:

  1. 启动器文件(/usr/share/applications/MarcDown.desktop),没填 Categories=,这样可能导致软件图标无法显示在主菜单中。建议改成 Categories=Office;,这样该软件的图标可出现在主菜单的 “办公” 类别中。
  2. 软件包的 “维护者” 写成了软件名称,而且软件描述没有写。建议修改、补充一下,不然显得太 “不专业” 了。

实现了一个小丑牌的背景,是动态的,好有意思啊哈哈