资讯专栏INFORMATION COLUMN

靡不有初,鲜克有终——写在VNote半周岁

roland_reed / 3011人阅读

摘要:舒适的编辑体验通过语法高亮,最大地消除与生俱来的编辑和阅读的割裂感。所以,是不是又少了一个回到阅读模式的借口代码块语法高亮通过插件可以支持代码块里面的代码语法高亮,其他的编辑器好像没有支持。

首发于简书.

从去年的十一开始到今天,VNote已经半周岁了,也迭代到版本1.3了。目前,VNote的用户很少,知道VNote的也不多。想想,使用最多的用户,可能还是我自己!:) 依然记得建立Q群后,拉第一个用户是非非想天,进群后对我说了一句:才刚开始做啊。

回想这半年,几乎所有的业余时间都用来折腾VNote,其他方面的自己倒学习得少了,偶尔也会有点“玩物丧志”的内疚。半年,不长不短,也是时候好好总结一下了。

开始的地方

四五年前开始,我就开始使用Markdown来记笔记。刚开始用的为知笔记是国内较早支持Markdown的一个笔记软件,刚开始用的时候感觉也还不错,断断续续也写了一千多篇笔记了。后来,我也喜欢用Markdown笔记来记录阅读代码相关的笔记。慢慢地,终于忍不住为知笔记在Markdown上的诸多缺点了:

编辑的时候是HTML富文本编辑,所以各种换行、格式特别别扭,本来被Markdown治好的强迫症又被狠狠地刺激了。特别是Linux和Windows上交替使用的话,段落格式简直是一塌糊涂。

为知笔记编辑的时候没有大纲(现在新版好像支持了),加上完全是白纸黑字的纯文本,当笔记稍微长一点后,我就在黑压压的一片字山字海里面找不着东南西北了。

Markdown的编辑体验可以用“渣渣”两个字来形容。

于是,我开始在网上试用各种笔记和编辑器。笔记软件是没得选择的,有道和印象那时都不原生支持Markdown。编辑器折腾了不少,包括MarkdownPad、初次惊艳的Typora、StackEdit和作业部落等。作业部落使用了一段时间,但是它的所谓客户端就是包了一层的Web,切换文件的那一段时间我都可以抠脚丫子了。

关于这些编辑器,我不满意的地方主要包括:

笔记管理功能弱
当然,只是一个编辑器,你还要啥自行车呢。

处理Markdown编辑阅读割裂感的方式不合我意
Markdown编辑器随手一抓几乎都是提供实时预览的。慢慢地,好像Markdown和实时预览就被强行绑在一起了。很多人一听见VNote支持Markdown,一般会问:支持实时预览吗?

实时预览对于Markdown新手来说还是不错的,起码能够随时纠正语法错误。但是,对于一个已经掌握了Markdown语法的人来说,真的需要吗?将屏幕一分为二,在左边编辑输入内容,然后看看右边效果似乎还不错;突然发现前面有个字写错了,又回到左边找对应的那个字段,把错误改正;然后看看右边,确认一下的确改的没错;然后,回到左边,继续编辑下面的内容。即使你不累,我描述起来都觉得累。
Markdown设计的初衷是通过纯文本加上一些标记来使得文本的阅读更舒适,通过简单的标记来将文章的一些重点内容和骨架脉络清楚地显示出来,从而方便用户阅读和编写。一旦编辑完成后,渲染为HTML以获得一个良好的排版并发布出去。所以,渲染是用来阅读的,而不是编辑
对于Typora,说时候,第一次碰见的时候还是觉得眼前一亮!直接将Markdown文本在编辑的时候就原地渲染为富文本,这样头就不用左右顾盼了。后来试了了几天,我就放弃了。一个是修改的多,Bug多,兼容性差,表现为复制一段Markdown文字进去后往往渲染错误;另一个是觉得这样的方式违背了Markdown的设计理念,作者输入的文本会被强行改正并渲染,作者能控制的就少了,使用体验上就类似于在Word里面用一段快捷键操作加粗、标题等。

寻寻觅觅后,回到了Vim的怀抱,折腾了一番配置后,发现编辑体验还是相当不错的:

Vim通过语法高亮来标示Markdown中的对应元素,让整篇文章一目了然;更巧妙的是,利用Vim的Conceal特性能够将一些标记隐藏起来,比如**bold**,在Vim中会以粗体显示bold,然后隐藏两边的**标记,而当光标移动到这一行的时候,**又会显示出来。

Vim可以支持Markdown的大纲显示,也自带不错的文件管理功能;

对于Vim编辑Markdown感兴趣的同学,可以移步这篇文章看看Vim与Markdown,实现键不离手。

Vim启发了我什么是一个舒适的Markdown笔记软件:

用户应该在编辑的时候,就能清楚地抓住文章的重点和脉络;

通过有意义的语法高亮,将Markdown中的一些标记、元素突出显示;

编辑的时候 原地 预览插入的图片、公式等;

方便的图片管理和表格插入;

目录大纲;

用户可以长时间停留在编辑模式,而不用来回切换到渲染后的效果;

强大的快捷键,包括对Markdown语法相关的支持;

大家对比一下简书的编辑器和VNote的编辑效果,就大概感受到我想表达的意思了(简叔别怪我~):

于是,一时头脑发热,带上C++和Qt就开搞了(当然还有我心爱的Vim)。

现在的位置

在实现的过程中,有时候我也问自己:真的有需要再折腾一个笔记软件吗?没有团队,没有服务器,没有资金,做出来后如何和别的产品竞争?真的会有人用吗?

当然,更多地,我会想:VNote和其他笔记软件、Markdown编辑器相比,优点是什么?

从闭门造车,到1.0,再到现在的1.3,VNote也初步形成自己的风格。

基于笔记本的笔记管理

借鉴于OneNote等,VNote支持笔记本、文件夹、文件的层次管理。一个笔记本是独立、自足的,可以使用外部工具同步到其他电脑上然后再导入。同时,也可以通过笔记本来区分不同安全等级的数据,比如个人笔记本可以使用云盘服务进行同步,公司相关的笔记本则保存到本地并使用公司的内部云服务进行同步。

舒适的Markdown编辑体验

通过语法高亮,最大地消除Markdown与生俱来的编辑和阅读的割裂感。使用VNote,你完全可以停留在编辑模式,而丝毫不会降低笔记的可读性。

总的来说,VNote提供的一些比较突出的特性有如下几点。

精准Markdown语法高亮

标题、粗体、斜体、链接、引用、行内代码等等,都会被醒目地标示出来。在纯文本上提供类似于富文本的阅读效果。所以,是不是又少了一个回到阅读模式的借口?

原地预览图片

复制图片后,直接在VNote中粘贴即可,VNote会帮你管理笔记的所有图片。更进一步,VNote会在编辑的时候显示图片链接对应的图片。所以,是不是又少了一个回到阅读模式的借口?

代码块语法高亮

Vim通过插件可以支持代码块里面的代码语法高亮,其他的编辑器好像没有支持。在1.3版本里,VNote支持编辑时代码块语法高亮啦。所以,是不是又少了一个回到阅读模式的借口?

强大的快捷键

借鉴Vim的快捷键和一些插件的创意,VNote支持 舰长模式导航模式。简单来说,就是:

设立一个前导键Ctrl+E,按下该键后,可以再按对应的按键来实现快捷操作,比如Ctrl+E 5跳转到第5个标签页;Ctrl+E 0跳转到上一个标签页等等。

Ctrl+E W会进入导航模式,在该模式中,VNote的主要部件都会显示两个字母,按下对应的字母,就能跳转到该部件,比如打开某个文件、跳转到某个文件夹等。

所以,是不是又少了一个回到阅读模式的借口?

多标签页、多窗口分割

VNote将程序员世界中的标签页和窗口分割这两个特性带到了笔记软件中,从此可以舒服地对照着已有笔记进行创作。所以,是不是又少了一个回到阅读模式的借口?(仅为保持队形)

未来的方向

VNote目前缺失的功能还很多,比如同步、导出、发布等。

总的来说,VNote的主要方向包括:

完善笔记管理功能;

完善笔记编辑功能;

支持云同步服务;

对接为知笔记、印象笔记等已有笔记服务,弥补移动客户端的缺憾;

完善对Markdown下游的支持,比如发布博客等;

开发之外

在VNote开发的这段时间里,除了代码之外,还有很多方面让我感触颇深的。

一个是VNote的用户。当听到用户说VNote很好用呀,当一个用户突然给我发一个小红包,当用户在Github上提Issues呀,当用户在群里提意见呀等等等等,都让我那颗小心脏扑通扑通地激动一番。

还有一个是VNote的推广。写了几篇文章分享了VNote和Markdown等相关的技巧,反馈还没有一些营养过剩的标题文、鸡汤文好。还是挺打击人的呢~:)

结语

接下来,我会继续VNote的开发,希望能折腾出一个自己满意的工具吧。谢谢所有用户的支持!当然,也不能只顾着玩了,还是得再学习点其他的东西。

埋头苦干了半年,用户虽然不多,不过幸亏女朋友还没有跑~~

最后,如果您认同VNote的设计理念,请多多关注项目(Github项目主页),谢谢!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24932.html

相关文章

  • Vim与Markdown共舞

    摘要:语法高亮是一个比较好的解决方案。本来也支持的语法高亮,但是做得还不够。通过语法高亮,基本就很容易抓住文章的内容和结构了。结语折腾下来,下编辑笔记完全是没有任何问题的,特别是语法高亮和特性,可以尽可能地减小与生俱来的割裂感。 Vim作为编辑器之神,用于Markdown的编辑和阅读,会擦出什么样的火花呢? 因为受不了某知笔记的编辑体验,前段时间探索了在Vim中编辑和管理Markdown笔记...

    RancherLabs 评论0 收藏0
  • 不得不知的责任链设计模式

    世界上最遥远的距离,不是生与死,而是它从你的世界路过无数次,你却选择视而不见,你无情,你冷酷啊...... showImg(https://segmentfault.com/img/remote/1460000019550563); 被你忽略的就是责任链设计模式,希望它再次经过你身旁你会猛的发现,并对它微微一笑...... 责任链设计模式介绍 抽象介绍 初次见面,了解表象,深入交流之后(看完文中的...

    raise_yang 评论0 收藏0
  • JavaScript 运算符与逻辑分支

    摘要:复合赋值运算符通过的形式表示,表示算术运算符。含有的运算都为和都不等于,逻辑运算符逻辑运算符通常用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符逻辑与逻辑或逻辑非。无论这个值是什么数据类型,这个运算符都会返回一个布尔值。 运算符 一元运算符 只能操作一个值的运算符叫做一元运算符 //后取值 先执行运算, 再取值 //前取值 先取值, 再执行运算 前自加: var x=...

    yankeys 评论0 收藏0
  • numpy数组维度理解终结版

    摘要:写在前面可能你会不相信,我是从玩中过来的,我觉得有必要记录一下,这个坑还非踩不可为了说的清楚一点儿,我多铺垫一点儿,先说说数组维度的理解引子老铁们猜一猜长啥样我猜你还没到点我到底想说啥,还是一头雾水,对吧哈哈别揍我,关子卖的挺大,我到底想说 写在前面 可能你会不相信,我是从玩pytorch中过来的,我觉得有必要记录一下,transpose这个坑还非踩不可,为了说的清楚一点儿,我多铺垫一...

    LeexMuller 评论0 收藏0
  • 【module】subprocess

    摘要:主要用来取代一些旧的模块方法,如等通过子进程来执行外部指令,并通过管道,获取子进程的执行的返回信息。等待子进程结束。 subprocess subprocess模块是python从2.4版本开始引入的模块。主要用来取代 一些旧的模块方法,如os.system、os.spawn、os.popen、commands.*等subprocess通过子进程来执行外部指令,并通过input/out...

    Hwg 评论0 收藏0

发表评论

0条评论

roland_reed

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<