CherryTree 1.7.0:给程序员一棵真正的笔记树

2026-05-25 18 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:8 分钟

做笔记这件事,程序员的需求和普通用户不一样——我们要存代码片段、要层级分类、要代码高亮、要数据自己可控。CherryTree 正是为这类需求设计的:无限层级树状结构、富文本与代码高亮并存、数据存成 sqlite 或 XML 文件,不依赖任何云服务。1.7.0 版本带来了若干新特性,值得重新审视这款老牌笔记工具。

为什么树状结构对程序员重要

大多数笔记软件要么是扁平列表(比如 Simplenote),要么是两层文件夹(比如 Evernote 的笔记本→笔记)。程序员的知识结构天然是深层嵌套的:语言→框架→模块→具体问题→解决方案。五层下去,扁平列表就找不着了。

CherryTree 的树没有层级上限。你可以这样组织:

编程
  └─ Python
  │    └─ 标准库
  │    │    └─ pathlib
  │    │    │    └─ 跨平台路径拼接技巧
  │    │    └─ asyncio
  │    └─ 第三方库
  └─ Rust
  └─ DevOps
       └─ Kubernetes
            └─ Helm

每个节点既可以是分类容器,也可以是一篇带富文本和代码块的笔记。这种「文件夹和文档合一」的设计,省掉了「这个节点到底是分类还是内容」的纠结。

两个存储引擎,各有适用场景

CherryTree 支持两种存储方式:

存储方式 特点 适合场景
XML(多个文件) 每个笔记一个 XML+文件夹,可用 Git 追踪 需要版本控制、多人协作
SQLite(单文件) 所有数据在一个 .ctb 文件里 便携、单机使用、文件少

如果你想把笔记仓库放进 Git,选 XML 存储。下面演示如何初始化一个 Git 管理的 CherryTree 笔记库:

# 安装 CherryTree(Ubuntu/Debian)
sudo apt install cherrytree

# Fedora
sudo dnf install cherrytree

# 也可以用 flatpak
flatpak install flathub com.giuspen.CherryTree

启动后新建文档,在「文件类型」选择 XML,保存到你的仓库目录:

# 初始化 Git 仓库来追踪笔记变更
mkdir ~/dev-notes && cd ~/dev-notes
git init

# CherryTree 保存后,目录结构大致如下:
# ~/dev-notes/
#   ├── cherrytree.xml          # 索引文件
#   ├── nodes/                  # 每个节点一个子目录
#   │   ├── 1_python/
#   │   │   ├── node.xml
#   │   │   ├── codebox_1.xml
#   │   └── 2_rust/
#   │       ├── node.xml

# 提交初始笔记
git add -A && git commit -m "init: cherrytree dev-notes"

之后每次编辑笔记,git diff 就能看到具体改了哪个节点的内容。这对长期维护的知识库来说非常有价值——你可以回溯任何一个知识点的演变历史。

代码高亮:笔记里直接存可读代码

CherryTree 内置了多种语言的语法高亮。在笔记中插入代码块时,选择对应语言即可:

# CherryTree 笔记中可以直接存这样的代码片段
# 以后翻笔记时,高亮让代码一目了然

import sqlite3
from pathlib import Path

def query_cherrytree_ctb(ctb_path: str) -> list[tuple]:
    """直接读取 CherryTree SQLite 存储的节点列表"""
    conn = sqlite3.connect(ctb_path)
    cursor = conn.execute(
        "SELECT node_id, name, syntax FROM nodes ORDER BY node_id"
    )
    rows = cursor.fetchall()
    conn.close()
    return rows

# 用法:指向你的 .ctb 文件
notes = query_cherrytree_ctb("~/dev-notes.ctb")
for node_id, name, syntax in notes:
    print(f"[{node_id}] {name}  (syntax: {syntax})")

这段脚本展示了 CherryTree SQLite 存储的一个实用玩法——直接用 Python 读取 .ctb 文件里的节点表。这意味着你的笔记数据完全透明,随时可以用脚本批量查询、导出、迁移。没有黑箱。

从其他笔记软件迁移过来

CherryTree 支持从 NoteCase、KeepNote、Knowit、Tomboy、TuxCards、Treepad、Leo 等工具导入数据。如果你之前用 Tomboy 记笔记,迁移路径很简单:

CherryTree 菜单 → 文件 → 导入 → 从 Tomboy 笔记
→ 选择 Tomboy 的数据目录(通常在 ~/.local/share/tomboy/)
→ 确认导入

导入后 Tomboy 的每条笔记会变成 CherryTree 树中的一个节点,原有的格式和链接尽可能保留。对于从多个零散工具里「收编」知识碎片,这个功能很实用。

密码保护:敏感笔记的边界

CherryTree 支持对单个节点或整篇文档设置密码保护。保护后节点内容加密存储,未输入密码时只显示标题。这比「整库加密」更灵活——你可以把「公开的算法笔记」和「公司内部架构文档」放在同一棵树里,只锁后者。

设置方式:

右键点击节点 → 设置密码 → 输入密码并确认

需要注意:密码保护基于 7z 加密,忘记密码无法恢复。重要笔记务必另外备份明文。

1.7.0 升级建议

1.7.0 版本引入了若干新实现(具体新特性列表可查阅官方发布说明)。升级路径:

# 如果通过 apt 安装,等发行版更新仓库即可
sudo apt update && sudo apt install cherrytree

# flatpak 用户直接更新
flatpak update com.giuspen.CherryTree

# 查看当前版本
cherrytree --version

升级前建议备份笔记数据:

# SQLite 单文件存储:直接复制
cp ~/dev-notes.ctb ~/dev-notes.ctb.bak

# XML 存储:用 Git 打个标签更方便回滚
cd ~/dev-notes && git tag pre-1.7.0

什么时候该选 CherryTree,什么时候不该

适合选 CherryTree 的场景:

  • 知识结构层级深,超过三层分类
  • 笔记中大量代码片段需要语法高亮
  • 要求数据本地存储、格式透明可查
  • 需要从多种旧笔记工具迁移数据
  • 想用 Git 管理笔记版本历史

不太适合的场景:

  • 需要多人实时协作编辑(CherryTree 是单机工具)
  • 强依赖移动端(CherryTree 目前只有 Linux 和 Windows 客户端)
  • 笔记以图片、手绘为主(CherryTree 的富文本偏文字和代码)

CherryTree 不是最时髦的笔记工具,但它的设计哲学——数据透明、层级无限、代码友好——恰好对准了程序员的核心痛点。1.7.0 继续在这个方向上打磨,如果你还没试过,值得花半小时建一棵自己的笔记树。


相关推荐