这文章属于专题的一部分,详见:Markdown知识贴

下面谈谈为知笔记(简称“为知”,下同)中的Markdown功能,包括为知Markdown支持的语法,Markdown功能的实现,目前已知的问题和对为知Markdown的展望等方面。

为知Markdown支持语法

根据为知的Markdown说明和简单测试,为知目前支持的语法有

区块元素标题(Setext式和Atx式)

段落

区块代码(缩进式和围栏式)

技术绘图(流程图和时序图)

区块公式

简单表格

分割线

区块引用

列表(无序和有序)

目录

行内元素链接(行内式、参考式和自动链接)

图片(行内式和参考式)

强调与重强调

删除线

行内代码

行内公式

脚注

为知对Markdown的改进

为知允许用户直接复制或拖动插入图片,和用自带的编辑器插入图片和表格,希望用这种方式来弥补Markdown文档自身对本地图片与表格的缺陷。这个看似很多编辑器都在支持的功能,但是为知这种方式得到的Markdown文档无法与目前可见所有Markdown编辑器兼容。

为知Markdown的实现

为知的Markdown与一般的Markdown有很大的不同,这产生了很多奇妙的现象:

为知的Markdown笔记与普通笔记共用一个编辑器;

Markdown笔记打开时总是要闪一下;

使用外部编辑器打开Markdown笔记后图片会丢失;

只需要在普通笔记标题后添加“.md”后缀即可生成md笔记,删除后又可以退回普通笔记;

可以使用所有你能想到的用来编辑普通笔记的编辑器编辑Markdown笔记,包括百度编辑器,写字板和Word(你没有看错,能编辑Md的不只是Editor.md插件);

编辑Markdown时,Markdown文本是富文本(可以附带各种各样的格式)

……

不知道大家有没有对这些现象产生强烈的疑问?对我而言,这些疑问在一段时间里常常在我脑海种浮现。当我同时解压一个Md笔记与普通笔记做对比的时候,上面的现象都会得到了解释。

一篇Markdown笔记与一篇普通笔记所包含的文件是一样的,而找遍整个Markdown笔记压缩包都不会找到一个以.md为后缀的文件。只有一个名为index.html的文档,而这就是我们要找的Markdown文档。

这就是为知Markdown的真相:为知的Markdown笔记是Html文档格式的,为知的Markdown功能是在HTML上实现的!

当我们使用一个所见即所得HTML编辑器的时候,它的实现逻辑是这样的:

编辑器作用于HTML文档的源码,然后HTML文档被渲染成网页返还编辑器显示,实现了所见即所得。

而一般的Markdown编辑器的实现逻辑是这样的:

编辑器作用于Markdown源码,并返还编辑器中显示。如果支持实时渲染,Markdown会转化成HTML语法,然后渲染成网页实时返还编辑器中显示。

为知的Markdown是建立在HTML基础上的,所以逻辑更加复杂:

为知编辑器作用于HTML源码,HTML被渲染成记录着Markdown的网页,如果是编辑模式,这个写着Markdown的网页就直接在编辑器中显示,相当于HTML编辑器的逻辑。如果是阅读模式,网页上的Markdown被转化成HTML,然后HTML渲染成网页(最终结果)返还编辑器中显示。

看图的左侧,类似一个所见即所得HTML编辑器逻辑。看图的右侧,类似一个Markdown编辑器的渲染过程。所以为知的Markdown实现方法可以简单的总结为在一个所见即所得HTML编辑器上搭载了一个Markdown渲染工具。

下面是吐槽总结点评的时间:

我们知道,Markdown的目的是转化成HTML发布,而为知的Markdown却使用HTML记录,总给人一种本末倒置的感觉。原本的HTML渲染成Markdown,然后Markdown又被渲染成HTML,又给人太迂回的感觉,不对,是为知遵循否定之否定的必然规律实现了螺旋上升……Markdown本身是纯文本,而为知的Markdown文本是HTML渲染之后得到的,可以是富文本,所以使用为知自带编辑器经常会得到格式古怪的“Markdown源码”文本。一般的Markdown编辑器是针对纯文本的,所以富文本的为知Markdown文本中的图片会被冲掉。因为渲染了两次,所以经常会闪一下。因为Markdown文本是用HTML记录的,所以加个后缀就可以当作Markdown(其实内部没有进行两者之间的转化),所以为知的Markdown与普通笔记可以共用一个编辑器,所以所有可以用来编辑HTML的编辑器都可以用来编辑为知的Markdown文本。

这种Markdown实现方式,最直观的问题应该是效率问题。因为流程太长,而且需要渲染两次,打开Markdown笔记的速度必然会收到影响,本人的实际体验是打开一篇Markdown笔记一般都需要2s左右,中间会看到Markdown文本先被显示然后被替换。看到自己电脑渲染这么慢,我都替为知的服务器心疼。使用Editor.md插件的时候更是明显,写一篇稍微长一点的Markdown笔记就会变得十分慢,需要关闭标签重新打开,但是没过多久又会变卡。

长远的看,这种Markdown会被底层的HTML深深的束缚住,难以发展,比如想开发一款Markdown编辑器,那么这个编辑器首先是要基于HTML编辑器的,而为知自带的HTML编辑器都又很多问题,让人很怀疑为知开发这Markdown编辑器的能力。再比如想加入本地图片功能,在不改变现有HTML文件包结构的情况下很实现难。

当然,这种方式也不是一无是处,有一个非常大的好处就是可以让所有的笔记格式齐平,这对搜索、笔记整理以及文件安全是有很大帮助的,因为同时支持两种不同的格式会让搜索和笔记整理的工作量大增,所有的功能和规则都要开发两套,那工作量是翻倍的,而且会容易变得非常不稳定。这大概也是大象(印象笔记)一意孤行不采用Markdown的原因之一吧。

最后说一下为知独创的添加图片和表格方式,那是一种为知自己图方便的办法,让第一次渲染得到的图片和表格在第二次渲染中不被过滤直接输出。Markdown本身是兼容HTML标签的,但是为知这么一搞,变成了好像是HTML在兼容Markdown语法一样。而且这样让Markdown变成带图片的富文本,这样的Markdown是个非源码又非所见即所得的四不像。这可能体现了为知对Markdown的理解,但是这样做没有太大意义,真正使用Markdown写笔记的人是不会用这种方式的,因为为知不是Bear,目前还没有足够的用户粘性,让用户只用自带编辑器来书写Markdown,而且这种方法也与Editor.md插件不兼容呢。如果有为知官方人员阅读此文,请考虑放弃这种添加图片和表格的方式,探索更好的方式。

对为知Markdown的展望

虽然对为知的Markdown抱怨甚多,但还是展望一下为知Markdown的未来,希望为知能看到。

解决效率问题

说实在,这是本人目前面临最大的问题,而且也是最直观的问题,打开Markdown笔记会比普通笔记慢一拍,而且会闪(在移动端也是如此),插件编辑会卡顿。虽然这些问题都是为知Markdown机制决定的,Markdown笔记会比普通笔记有更多的步骤,但还是希望为知在这个问题上想想办法。重构Markdown的实现机制?还是更改处理的顺序,先区分Markdown笔记和普通笔记再进行渲染?

还有插件编辑Markdown一段时间后容易变慢,这个当然与个人机器性能有关,但是我打开Word写长文本一点问题都没有,反而用为知写Markdown觉得卡,这很尴尬。自从用了为知的Editor.md插件之后我就没有在使用其他Markdown编辑器了,最近用Markdown写长文本,响应慢的问题越来越严重。目前已经产生了放弃使用为知编辑笔记的想法了,以后可能只把为知做收集和整理,将笔记书写交给其他应用。如果为知有能力自己开发一款自带的Markdown编辑器的话,虽然不能从根本上解决问题,但是在响应速度上应该可以得到很大的改善,不过这需要提前对Markdown笔记和普通笔记进行区分就是了。

Markdown编辑器

虽然有Editor.md插件,但是一个自带的Markdown编辑器总是需要的,插件的功能再多,性能上总是受限的,而且使用插件编辑Markdown时笔记工具栏会消失,无法编辑标题,无法添加附件,无法添加标签等等。现在的Markdown编辑器发展太快,因为Markdown语法本身就限定了功能的范围,所以目前的Markdown编辑器的关注点大多在用户体验上。虽然拿一个专业编辑器来要求一个笔记软件是不公道的,笔记软件也很难达到那样的高度(Bear那样极度强化书写功能的怪物例外),但是一个专门的Markdown编辑器非常必须。Markdown只是书写语言,是为平台或编辑器服务的,不同于HTML,不是发布语言,所以不要奢望把Markdown完全交给外部编辑器,为知的Markdown编辑器应该实现下面几点功能:保证Markdown的纯文本特性。首先编辑器书写的Markdown文本应该以纯文本呈现,乱七八糟的格式太影响书写。其次是编辑器可以让从别处复制过来的富文本转化成Markdown语法的纯文本。如果不能重新搭建一个Markdown编辑器,起码在现有的HTML编辑器中加入一个纯文本模式的功能。

图片插入。前面说过图片插入的问题,HTML式的插入图片破坏了Markdown纯文本特性。那有没有方法,既能满足Markdown语法,又不破坏现有的HTML文件框架,甚至可能被外部纯文本编辑器编辑过后不掉图?我有个idea不知道可不可行,供参考。首先图片依然存放在\index_files\……路径下,编辑器中新增一个板块专门管理和查看\index_files\……下的图片(这里暂且将这个板块称为图床),然后图片Markdown语法使用参考式。每当在图床中添加图片,会在Markdown文档最后添加一个参考id,id为图片名字。用户想添加图片的时候,使用参考式图片语法![][id]即可插入图片。如果将图片直接拖拽到Markdown文档,会在图床和\index_files\……路径下添加图片,同时在Markdown文档中插入一个完整的参考式语法。图床最好会锁定\index_files\……下的图片,只有在图床中删除图片,才能让图片从\index_files\……中删除。如果想使用外部编辑器,只要先把需要用到的图片放到图床,然后调出外部编辑器,使用参考式语法就可以同样插入图片。另外还能让用户在图床中对图片进行放大查看、修改和替换。我觉得这是个难度少,但是受益巨大的做法,请为知认真考虑。

最好有语法高亮或语法识别。对于双栏实时预览,我觉得其实意义不大,那是给初学者用来过渡的,因为会造成信息冗余,占用笔记区空间,而且实时渲染也需要占用一定的资源。但是Markdown毕竟是源码输入,难免会打错语法,所以输入Md语法之后编辑器最好提供一个反馈,或是高亮,或是其他的样式改变。

编辑时空格可以被方便显示。空格是Markdown语法中很重要的语法元素,空格的数量不对就可能造成一些语法错误,但是空格不方便看,希望编辑时空格会被方便显示出来。有的编辑器将空格显示为灰色的点·。

目前的自带编辑器无法实现对大纲的预览,在阅读模式才可以看到大纲,如果愿意开发Markdown编辑器,希望可以加入大纲功能。如果为知笔记不希望在编辑器上着力太多,请优先实现第一第二点。

Markdown语法

为知其实已经支持挺多Markdown语法的,所以这里稍微提一些展望缩进式代码目前有bug,多行代码会变成一行,而且没有行号。

为知的Markdown表格不支持第一单元格为空。

围栏式代码目前只能用3个反引号包裹,希望可以用3个以上的反引号,这样就可以使用Markdown记录Markdown语法了(有点绕)。

MultiMarkdown支持修订语法(CriticMarkup),可以高亮文本,添加注释。有没有可能加入到为知助手中呢。

目前不少Markdown支持元数据,有点类似HTML的开头部分,可以添加标题,作者之类的信息,很实用。但是鉴于目前为知的Markdown机制,元数据好像只会添麻烦。但是这里说个题外话,目前的界面标题栏于工具栏共用一行,而笔记页标签又有题目,感觉有点信息冗余:

多希望题目这一类的信息放到文档开头,打开向下箭头可以查看和修改更多信息,然后向下滚动的时候可以被隐藏,画了个示意图:

是时候让为知为Markdown也做点贡献了,希望为知可以发明个绘制简单的思维导图的语法,可以像绘制流程图一样,使用围栏式区块代码实现,代码用Markdown的列表或者标题就行。我觉得这样比使用开发插件或模板来的实在,更有用户粘性,可以源远流长,成为一大亮点。而且国外其实已经有软件实现了Markdown语法向思维导图的转化,只是没有将其设计成语法用于Markdown书写。

为知作为一款笔记软件,如果不把编辑作为重点的话,那么希望在阅读方面做一些优化,尤其是Markdown的渲染和阅读。比如对于单独成段的图片,可以渲染成区块,有的衍生语法就是这么设计的,还有如果图片比较大,阅读时支持点击放大查看。

开放API。为知笔记作为一款笔记软件,功能上不可能面面俱到。如果为知笔记的开发重点不在笔记编辑这一块的话,像大象一样开放API或许是最好的选择,毕竟只有Win端才支持插件和外置编辑器。

html markdown写笔记,谈谈为知笔记的Markdown功能相关推荐

  1. linux下写笔记软件,linux下安装一款笔记软件(为知笔记)

    今天突然想在ubuntu上安装一款跨平台(windows.linux.android)的笔记软件来做日常记录.文章记录以及网页收藏.原先并没有使用过类似的软件,只是见身边的很多人在使用印象笔记来做记录 ...

  2. 石墨笔记,为知笔记和Effie哪个更适合学生?

    学生向来是与写作有着密不可分联系的那一部分群体,以大学生为例,不仅学习的过程中需要写作,课外做一些兼职也会应用到写作.而且学生的写作需求比较多样化:记录笔记.整理知识点.做知识管理.创建思维导图帮助记 ...

  3. 石墨笔记,为知笔记, Effie ,哪个更适合写稿爱好者?

    在当今这个智能化水平大大提高和计算机普及的社会,对于写稿爱好者来说,写作软件就相当于曾经的纸和笔,不仅是工具,更是陪伴自己的朋友,所以寻找并选择一款好的,适合自己的写作软件也是相当重要的,但是这样的写 ...

  4. 石墨笔记,为知笔记和Effie哪个更适合教师?

    教师一直被誉为"人类灵魂的工程师",教师担负着教书育人的重责,正因如此,教师需要时刻充实和更新自己的知识库,需要掌握一定的方法将深刻的知识通过通俗的讲解传授给学生,在这个过程中,写 ...

  5. 石墨笔记,为知笔记和Effie哪个更适合商业机构提案人员?

    很多人听到商业机构提案人员就会产生疑问:商业机构提案是什么,商业机构提案人员是干什么的?其实,商业机构提案人员并不是我们通俗理解当中的公司里面的某一个职位,而是在商业机构当中撰写提案的人员,在公司内部 ...

  6. linux上记笔记软件,linux下安装一款笔记软件(为知笔记)

    今天突然想在ubuntu上安装一款跨平台(windows.linux.android)的笔记软件来做日常记录.文章记录以及网页收藏.原先并没有使用过类似的软件,只是见身边的很多人在使用印象笔记来做记录 ...

  7. 石墨笔记,为知笔记和Effie哪个更适合采编?

    采编工作者是专业从事文字工作的人,身在采编行业,很多都需要每天和各种各样的作品打交道,对采编工作者来说,一款适合的写作软件将会是对工作最有用的工具,但是现在市面上的写作软件种类实在太多,品质也良莠不齐 ...

  8. 石墨笔记,为知笔记和Effie哪个更适合公众号主?

    随着公众号运营进入大众视野,很多公众号主通过运营收获了很多粉丝的喜爱,同时还获得了丰厚的劳动报酬.这也激励越来越多的人加入到公众号运营的行列中去.那么想要运营好一个公众号,到底什么才是最重要的呢?其实 ...

  9. 怎么在添加为知笔记编辑器/为知笔记怎么用其他编辑器编辑/为知笔记怎么才能用Word/notepad++编辑

    1.为什么要添加外部编辑器 为知笔记自身提供了基础的编辑功能,足够满足一般用户的笔记需要.但有的用户有特殊的需求,需要编辑很多特殊格式与内容的文档.这时候一方面可以采取先用其他编辑器如Word.VIM ...

  10. 跨平台笔记工具-为知笔记

    http://www.wiz.cn/ 最近需要在不同平台下工作,做笔记.试用了一下目前比较流行的笔记软件,最后选定了为知笔记. 首先支持mac,win,linux不同平台(这点比较爽),也支持andr ...

最新文章

  1. 电动车逆变器的基础知识
  2. python每个if条件后面都要使用冒号_每一个条件后面都要使用冒号。(2.0分)_学小易找答案...
  3. pandas.apply 有源码github
  4. MyBatis框架的文件配置
  5. C++中调用DLL中的函数的两种方式
  6. JVM中锁优化,偏向锁、自旋锁、锁消除、锁膨胀
  7. idea console中文乱码_idea控制台tomcat中文乱码的处理方法
  8. 极客技术专题【009期】:web技术开发小技巧
  9. Python版常见的排序算法
  10. 较简单的date转化成格式化的timeString
  11. Linux学习----文件的使者-Rsync(马哥教育原创)
  12. 修改服务器cimc地址,【交换机在江湖】实战案例十三 HUAWEI S系列交换机802.1x特性对接H厂商IMC服务器配置指导...
  13. 数字逻辑练习题(九) 分析由四选一多路数据选择器构成的电路
  14. Python实现PDF文件压缩
  15. 融资方案的商业计划书
  16. php小于neq qe,ThinkPHP eq neq if 标签
  17. 杨辉三角c语言杭电,杭电 杨辉三角
  18. 【文学文娱】《屌丝逆袭》-出任CEO、迎娶白富美、走上人生巅峰
  19. 嵌入式开发的发展方向和前景
  20. 电脑怎么卸载软件?彻底卸载软件,4个方法分享

热门文章

  1. 苹果怎么用计算机,苹果笔记本怎么用(苹果电脑Mac 系统基本操作介绍)
  2. 深圳摇号验证码一输完就变的解决办法
  3. h标签和p标签和hr标签
  4. 推荐14个可以展示你代码的网站
  5. Git 拉取远程仓库失败
  6. 生鲜电商之百果园的未来
  7. 光源与打光该如何选择,如何获得一副好图像,机器视觉第二步,选择光源和如何打光
  8. 高清多媒体接口(HDMI)静电防护器件ULC0524PA
  9. python箱形图各部分含义_箱形图以及python实践
  10. 那些不回你微信的人都在看什么?