首发于简书.

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

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

开始的地方

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

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

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

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

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

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

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

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

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

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

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

  2. 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项目主页),谢谢!

靡不有初,鲜克有终——写在VNote半周岁相关推荐

  1. 【无标题】写了一个半小时才写这么一点,是不是我能力不行呀?而且暗亮边框还显示不出来,害

    <!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <t ...

  2. Mysql进阶(1)——异步复制(主从复制、Gtid复制)、半同步复制

    前言 原理总结 异步复制:在主节点写入日志即返回成功,默认情况下MySQL5.5/5.6/5.7和mariaDB10.0/10.1的复制功能是异步的.异步复制可以实现最佳的性能,主库把binlog日志 ...

  3. 作为程序员,你是否曾经想过写一本书?

    爱读书的人大概都在内心萌生过这样的想法:如果这辈子能写本书就好了!然而,这样的想法转瞬即逝,我们告诉自己别异想天开:"写书--是一件难度极大的事儿,像我这样水平的人怎么可能胜任?" ...

  4. 64位虚拟机下asm()语法_一步步学写Windows下的Shellcode

    如何在WIndows下编写一个shellcode?为什么会问这个问题,前段时间在做win下的Exploit,但是都是使用大佬写的shellcode,无法实现个人的一些需求.而网络上编写shellcod ...

  5. mysql 半同步_mysql 主从同步 与 半同步

    mysql主从同步复制定义 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave).通过配置文件,可以指 ...

  6. 为什么写了value属性 jq赋值value值不显示_[Go基础]理解 Go 标准库中的 atomic.Value 类型

    转载声明 文章作者:喵叔 上次更新:2019-03-15 许可协议:CC BY-NC-ND 4.0(转载请注明出处) 原文链接:https://blog.betacat.io/post/golang- ...

  7. 自己写操作系统学习总结

    怎样自己写一个简单的操作系统? https://www.zhihu.com/question/20207347 我写的时候一些经历: 第一次写的时候3000行左右的就无法调试了,当时主要参考了linu ...

  8. 查找算法之二分查找(对半查找)

      当有序表采用顺序存储时,可以采用二分查找的方式查找指定关键字的元素.   二分查找的基本思想是选择表中某一位置 i i i的元素 A i A_i Ai​,设该元素的关键字为 K i K_i Ki​ ...

  9. 内是不是半包围结构_半包围结构(软笔)

    主备人:乔丽 半包围结构(软笔) 教学内容:学写毛笔字: "司.氧" 教学要求: 1 . 指导学生通过观察, 了解 "司. 氧" 间架结构原则的具体要求, 并以 ...

  10. C++自学笔记——空闲时间写的代码

    这周利用空闲时间写了一点赛尔号对战系统的代码,写了一小半,还没完工,先提交一下. 目前对于精灵玩家的一些数据值已经编写完了,但是都放在一个文件里,有很多重复工作,而且看起来不是很美观,之后回去学习和修 ...

最新文章

  1. 从svn下载的Mavn项目,到本地后不识别(MyEcplise)
  2. 深入浅出,机器学习该怎么入门?
  3. 微信开发提示未绑定网页开发者
  4. NYOJ 20 吝啬的国度 广度优先搜索
  5. 内蒙古广播电视大学计算机专修学院电话,内蒙古广播电视大学
  6. 存储类型auto,static,extern,register的区别 转
  7. 手把手教你做用户画像:3种标签类型、8大系统模块
  8. power bi 实时_Power BI中的实时流
  9. zookeeper集群
  10. mysql 判断大小_《fantasy系列》高性能mysql(一)
  11. 前端基础--jquery
  12. DDL、DML、TCL
  13. 苹果微信分身版ios_苹果ios微信分身三开助手
  14. ubuntu编译tensorflow 支持AVX,AVX2等指令集
  15. 三种CSS样式实现(内联样式、内联样式表、外联样式表)
  16. Labview产生TTL信号
  17. fabric 中 peer 和 couch 容器中网络和数据存放目录地址
  18. Prometheus资源监控工具配置小结
  19. 19_09_13 关于c语言中位域的理解
  20. flash player调试

热门文章

  1. 蓝屏死机(blue screen of death)
  2. 手机的内核版本、基带版本等都是什么意思?
  3. U-Mail邮件系统管理功能 高效办公轻松搞定
  4. GitLab CI介绍——入门篇
  5. 游戏制作流程全息解密
  6. 什么是爬虫?有哪些用途
  7. 关于在SW中怎么放样凸台基体
  8. 机械键盘Windows键失效:Fn+Windows键解决
  9. 卧龙图说酒:喝酒的人生,是有意义的人生!
  10. pandas系列学习(七):数据透视表