# VNote——一款值得尝试的Markdown笔记软件
[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等编辑器。

## 第一印象
![主界面](_v_images/20190601092849064_10807183.png)

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

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

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

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

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

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

![编辑界面](_v_images/20190601094432183_1982488019.png)

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

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

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

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

![插入图片](_v_images/20190601095422029_512887535.png)

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

![复制为富文本](_v_images/20190601095823955_1402719369.png)

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

![通用入口](_v_images/20190601100141675_507271089.png)

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

![搜索已打开文件](_v_images/20190601100236334_874194025.png)

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

![搜索大纲](_v_images/20190601100503299_166117225.png)


在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`插件，引入`导航模式`，所有部件都能通过快捷键来获取焦点。

![导航模式](_v_images/20190601101534146_2088113724.png)

## 细节周到，惊喜不断
由于是个人作品，因此VNote能非常灵活地提供一些非常有趣的巧妙的小功能，例如：

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

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