VNote：一个更懂程序员和 Markdown 的笔记软件
VNote 借鉴了程序员日常使用的代码编辑器的很多优点，特别是 Vim 的很多优秀思想，尽力成为一款更懂程序员和 Markdown 的笔记软件。
笔记 Vim
101.206.169.157
用了一段时间，不过不知道高级功能，今天看了才知道，有机会再仔细研究
来自四川的 Chrome Mobile 57.0|Android 用户
2019-06-01T21:51:57.000
61.152.154.86
跟我的需求几乎完全吻合，同道中人！试过很多笔记软件了，就一直感觉没有一款完全契合喜欢vim的程序员的，这个我试试！<br />
不过之前试过一些开源的笔记软件，比如joplin，有严重的丢笔记问题，希望这个稳定性会好些
来自上海的 Firefox 84.0|Windows 10 用户
2021-01-20T23:57:33.000
VNote 借鉴了程序员日常使用的代码编辑器的很多优点，特别是 Vim 的很多优秀思想，尽力成为一款更懂程序员和 Markdown 的笔记软件。
![](/data/attachment/album/201906/01/215125enckcktkjtjjmh2d.jpg)


[VNote](https://tamlok.github.io/vnote) 是一款跨平台的开源 Markdown 笔记软件（[项目地址](https://github.com/tamlok/vnote) ）。不像其他多数宣称跨平台的软件，VNote 将 Linux 和 Windows 都作为主要支持平台，在 Linux 上提供非常优秀的体验。VNote 的目标是做一个带有舒适 Markdown 编辑体验的笔记软件，或者带有强大文件管理功能的 Markdown 编辑器。VNote 借鉴了程序员日常使用的代码编辑器的很多优点，特别是 Vim 的很多优秀思想，尽力成为一款更懂程序员和 Markdown 的笔记软件。


需要强调的是，VNote 是一款 **笔记软件**，而不是一款 Markdown 编辑器。所以，对比的应该是为知笔记或 VSCode 或 Vim 等支持笔记的软件，而不是 Typora 等编辑器。


### 第一印象


![主界面](/data/attachment/album/201906/01/212058ze3eebbbki9kee9z.jpg)


VNote 界面的设计原则是尽量利用所有空间，因此没有当前流行的大额头或者侧边栏大按钮，占据主要空间的就是编辑区域。


* 左侧是导航栏，支持笔记本导航、历史文件、浏览外部文件系统以及标签导航；
* 中间是编辑区域，支持多个标签；
* 右侧是工具栏，包括大纲、片段以及小推车；
* 右下角是全文搜索，支持针对当前已打开文件、当前文件夹、当前笔记文本以及所有笔记本的搜索，包括文件名、内容、标签以及大纲搜索；
* 底部是状态栏，包括 Vim 状态栏、标签栏、编辑器状态栏以及字数统计；
* 顶部是工具栏，其中包括附件、通用入口、灵犀页等常用功能；


左右两侧的栏目都可以通过一个快捷键隐藏或显示，从而可以将编辑区域最大化。VNote 使用“笔记本-文件夹-笔记”的层级结构来维护数据，所有数据都是开放的纯文本，因此可以使用其他任意标准工具来编辑或阅读 VNote 的笔记。VNote 不提供数据同步功能，用户需要自己使用第三方的同步软件将数据同步到其他 PC 上，然后重新导入到 VNote 中。


### 舒适的 Markdown 体验


Markdown 有着天生的编辑和阅读的割裂感。当前主流的处理方式主要有三种：


1. 单纯按纯文本处理，代表软件是为知笔记，其缺点是只有黑压压的文字；
2. 双边实时预览，左侧编辑模式，右侧实时预览阅读效果，代表软件就很多了，其缺点是仍然割裂，而且浪费空间。现在如果一个软件还采用双边实时预览来编辑 Markdown，那基本是拿不出手了；
3. 类富文本实时渲染模式，代表软件是 Typora，其缺点是矫枉过正，和 Markdown 的设计理念背道而驰；


VNote 采用的是一种折中的方案——语法高亮和原地预览。通过精心的语法高亮以及图片原地预览，希望能在保证 Markdown 简洁的前提下，尽可能帮助用户掌握文章信息和脉络。


![编辑界面](/data/attachment/album/201906/01/212355szp1qqqrkkziqkx3.jpg)


VNote 区分编辑和阅读模式，这是 VNote 编辑模式的一个界面。该界面展示了 VNote 支持的主要 Markdown 元素：


* 所有文本都没有隐藏，而且可以直接访问；
* 语法高亮标题、粗体、斜体；
* 代码块语法高亮；
* 公式、图片原地预览，支持 PlantUML、Flowchart 等图表增强；
* 行号，包括相对行号或绝对行号；


刚从双边实时预览的软件迁移到 VNote 时，可能会觉得不太习惯，但随着对 Markdown 的熟悉，对阅读的效果会越来越有信心，基本能做到在编辑模式下看到的是什么效果，在阅读模式就是这样的效果。如果是刚从 Typora 迁移过来，则很多人可能都会写错语法，因为使用 Typora 基本不用关注 Markdown 的语法，这算是 Typora 的利弊吧。


#### 随心所欲的图片支持


VNote 支持直接粘贴插入图片，包括下载并插入网络图片。VNote 会将图片保存到与笔记文件同文件夹下面的一个文件夹，所以用其他编辑器打开 VNote 的笔记，一般都是可以正常显示图片的。另外，VNote 还会管理插入的图片，将不再需要的图片自动清理。


![插入图片](/data/attachment/album/201906/01/212527a19w1xp70p9s1b9b.jpg)


#### Markdown 与富文本的交互


VNote 支持直接粘贴复制的富文本（如网页），VNote 会将富文本解析为 Markdown，并自动下载图片到本地。另外，VNote 也支持将 Markdown 文本复制为富文本，包括微信公众号、Word 或 OneNote 等。


![复制为富文本](/data/attachment/album/201906/01/212616y2sasj4488ussa0k.jpg)


### 通用入口，让一切触手可达


VNote 借鉴了代码编辑器里面的模糊搜索功能，提供了“通用入口”功能。通过一个简单的快捷键即可唤出一个输入框，输入内容，即可实现全文搜索、大纲搜索等功能。


![通用入口](/data/attachment/album/201906/01/212710h4zx03bxsw0brhy3.jpg)


在当前所有打开文件中搜索 Markdown：


![搜索已打开的文件](/data/attachment/album/201906/01/212742sezzzhxw1ghe2lj4.jpg)


在当前所有打开文件的大纲中搜索 vnote：


![搜索大纲](/data/attachment/album/201906/01/212816zwsczvojgvxjgg33.jpg)


在 VNote 中，我基本很少使用工具栏那个传统的全文搜索了。要打开一个文件？通用入口！要查找一个关键字？通用入口！搜索所有大纲？通用入口！列出指定标签的文件？通用入口！全程快捷键高速操作，C++ 实现的全文搜索引擎即刻为你呈现所有结果！


### Vim 的疯狂


VNote 名字的由来是: “A Vim-inspired note-taking application”，后面有 Emacs 用户抱怨所以才慢慢把这个标语去掉了，但 Vim 思想对 VNote 的影响可以说得上是疯狂。


VNote 编辑器是自己实现了一个简单的 Vim 模式，基本的操作都支持，标记、寄存器等也有支持，唯一可惜的是还没有支持`.`操作。


VNote 对 Vim 的疯狂可以体现在：


* 所有列表都支持`Ctrl+J/K`上下导航；
* 所有编辑框都支持`Ctrl+U/W/H`向前删除；
* 借鉴 Vim 的前导键，引入“舰长模式”，基本主要快捷键都通过`Ctrl+E`前导键开始，避免和其他软件的冲突；
* 借鉴 Vim 的`easy-motion`插件，引入“导航模式”，所有部件都能通过快捷键来获取焦点。


![导航模式](/data/attachment/album/201906/01/212959st4t9h76qln7o4n9.jpg)


### 细节周到，惊喜不断


由于是个人作品，因此 VNote 能非常灵活地提供一些非常有趣的巧妙的小功能，例如：


* 灵犀页：一个可以用快捷键打开的临时的页面；
* 快速访问：可以设置一个笔记通过快捷键打开；
* 小推车：任意多选笔记，然后统一处理，例如导出；
* 片段：通过快捷键插入常用文本；
* 幻词：快速插入当前日期等信息，支持编辑器以及新建笔记等输入框；
* 高亮光标行，锁定光标行到编辑区域中央；
* 编辑 PlantUML 图表时，能双向同步编辑与预览；


VNote 还有很多贴心和强大的功能，有兴趣的可以[下载尝试](https://github.com/tamlok/vnote/releases)。VNote 提供了 AppImage 格式打包的文件，直接下载运行即可。希望这款基于 Qt 框架开发的笔记软件，能给你带来有别于一众基于 Electron 开发的其他编辑器的全新体验！


最后，欢迎大家提出各种功能请求和 bug 报告，本项目的作者 tamlok 也欢迎更多开源爱好者和使用者参与到本项目的开发当中。

