VNote:一个更懂程序员和 Markdown 的笔记软件
创始人
2024-03-02 02:44:23
0

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

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

第一印象

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

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

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

舒适的 Markdown 体验

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

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

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

编辑界面

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

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

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

随心所欲的图片支持

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

Markdown 与富文本的交互

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

复制为富文本

通用入口,让一切触手可达

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

通用入口

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

搜索已打开的文件

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

搜索大纲

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

细节周到,惊喜不断

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

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

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

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

相关内容

等了30年,微软MS-DO...
曾经称“开源是毒瘤”时有多么嫌弃,现在“微软 ❤️ 开源”就有多么...
2025-06-26 09:11:25
EUROCOM 推出 2k...
IT之家 6 月 22 日消息,厂商 EUROCOM 本月 19 ...
2025-06-22 15:43:08
Google 这款免费 A...
在不久前结束的 Google I/O 上,Google 悄咪咪地在...
2025-06-16 07:41:52
3种笔记本录屏快捷键分享
案例:怎样可以快速打开电脑录屏功能? ...
2025-06-01 18:39:28
Cad二次开发笔记
CAD 二次开发中的 cvport 是什么意思 什么类型 在CA...
2025-06-01 15:45:12
Linux 网络编程学习笔...
一、socket 地址 API 1. 主机字节序和网络字节序 现代...
2025-06-01 12:22:49

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...