35-项目总结与展望FinalReview
35 · 项目总结与展望 Final Review(Deliverable & Roadmap)
本节目标(Goals):站到山顶回看 35 节旅程——验收功能清单、收尾架构、整理成果物,并为 Vicarus 的未来划出路线图。
前置知识(Prerequisites):本系列全部。
1. 一句话总结我们造了什么
一个 C++20 + CMake 分层架构的、可脚本化的、扩展语言为 Python 的类 Vim TUI 编辑器。
从设计哲学(教程 00)到现在,核心主张始终没变:
"分离"永远是主角 —— 核心与 UI 的边界、纯函数与副作用的边界、插件与内核的边界。这三条边界,让每个模块既可测、又可换、又可合作。
2. 验收:功能清单逐项打勾
| 功能 | 教程 | 验收动作 |
|---|---|---|
| 启动进入普通模式 | 09/20 | vicarus → i 进入插入,Esc 回普通 |
| 光标移动/编辑 | 09/10/12 | h j k l、w/e/b、x、dd、A 等 |
| 命令解析 | 11/12 | d2w 删两词、g GG、`0 |
| ------ | ------ | ---------- |
| 启动进入普通模式 | 09/20 | vicarus → i 进入插入,Esc 回普通 |
| 光标移动/编辑 | 09/10/12 | h j k l、w/e/b、x、dd、A 等 |
| 撤销/重做 | 13 | u 撤回一次插入会话、Ctrl-r 重做 |
| 寄存器 | 15 | "a yy "a p 复制粘贴到命名寄存器 |
| 打开/保存/退出 | 14 | :e file :w :q :wq;无文件启动可编辑临时缓冲,:w file 保存为指定名 |
| 语法高亮 | 21 | 打开 .cpp 见关键字/类型/注释着色 |
| 搜索/替换 | 22 | /pattern n N :%s/a/b/g |
| 多缓冲/分屏 | 23 | :e b.cpp :bn :split <C-w>w |
| 宏录制 | 24 | q a <keys> q @a |
| Python 嵌入 | 25 | 桥可 exec/call 任意 Python |
| 插件系统 | 26/27/28 | togglecomment、dump 命令可用 |
| 配置系统 | 29 | :set number、config.toml 生效 |
| 性能 | 30 | 搜索改 KMP、渲染不拷全文、GapBuffer 扩容/布局修复、增量行索引 |
| 跨平台 | 31 | 三 OS 构建矩阵绿 |
| 测试 | 32 | ctest 全绿 |
| 打包 | 33 | cpack 出 .tar.gz + .deb |
| CI | 34 | push 即三平台构建+测试+发布 |
若上面有一项没跑通——回到对应教程补作业。验收不许打折,这就是本系列最后一条纪律。
3. 收尾:最终架构与目录
Vicarus/
├── CMakeLists.txt # 版本单一来源 + 目标编排
├── cmake/VicarusConfig.cmake # vicarus_setup_target 助手
├── include/vicarus/
│ ├── infra/ event_bus, config, file_io, platform
│ ├── core/ buffer(gap), cursor, mode, command_parser,
│ │ motions, undo_redo, register, search,
│ │ syntax_highlight, buffer_set, macro
│ ├── ui/ terminal, screen, status_bar, line_numbers,
│ │ viewport, window_manager, input, keymap
│ └── extension/ python_bridge, plugin_manager, python_api
├── src/ # 分层实现 + editor.cpp + main.cpp
├── plugins/ # hello, comment 两个真实插件
├── syntax/ # *.vsh 规则文件
├── tests/ # GoogleTest 单元测试
├── bench/ # 性能基准
├── .github/workflows/ci.yml # 三平台 CI
└── Turtorials/ # 本系列 36 篇教程(本教程目录)
依赖箭头依旧单向:
infra → core → ui → extension
└──→ editor(组合根)
4. 学到了什么(修炼清单)
- C++20 工程实践:CMake 目标分层、可选依赖、
std::string_view、现代头文件组织; - 架构思维:分层、事件驱动、备忘录、纯函数与副作用分离(每章都在练);
- 编辑器内幕:GapBuffer、光标会话、撤销栈、寄存器、宏、视口、闪烁/回滚的动机;
- 可扩展性设计:桥接层隔离 CPython、插件契约、事件钩子、配置驱动一切;
- 交付:测试 + 打包 + CI 的完整闭环。
5. 展望:Vicarus 的下一个五年(Roadmap)
按"投入产出比"排序的半成品方向:
| 方向 | 动机 | 复杂度 |
|---|---|---|
| LSP 客户端 | 补全/跳转/诊断,编辑器跻身生产力一线 | ★★★★ |
| Tree-sitter 高亮 | 取代正则扫描器,跨语言精确语法树 | ★★★ |
| 多光标 | 一块糖,但编辑体验台阶式上升 | ★★ |
| 主题系统 | 调色板外置为配置文件,兑现 UI 层分离 | ★★ |
| 终端复用器集成 | tmux ≤ 键绑定 pipeline,别自己啃 term emulation | ★★ |
| 会话/续启 | 持久化打开文件与光标,别丢上下文 | ★★ |
| 性能 | 5 万行文件基准目标 < 30ms;IMG 寄存器 | ★★★ |
每一条的落点都在教程 05 的架构图上:LSP/多光标落在 core、主题落在 ui、会话落在 infra、性能落回 core+ui 的纯函数层。
6. 会一直有用的参考资料
- Google C++ Style Guide —— 命名/头文件/注释惯例
- cppreference.com —— C++20 标准库唯一正典
- CMake 官方文档 —— target/install/cpack/CTest 四件套
- Python C API —— 嵌入/扩展的唯一权威
- ncurses 与
man terminfo—— 终端协议的尽头 - Vim 帮助与
:help motion—— 我们很多设计的灵感源头 - [GoogleTest / GitHub Actions Docs] —— 测试与 CI 的日常手册
7. 结语
教程到此结束,但 Vicarus 的故事才刚开头(它是写完才知道会长成什么样的项目)。你手里现在的这份工程——分层干净、逻辑可测、插件可编程、交付自动化——已经是一个"能养活真实工作流"的编辑器胚胎。
去给它写第一个插件、开第一个 GitHub Release、向朋友炫耀你的 .cpp 和 .toml。如果回头改某个模块,请记得:边界是你最好的朋友。
系列总览(36 篇)
00 概览与哲学 │ 01 环境 │ 02 CMake │ 03 目录 │ 04 Git
05 架构总览 │ 06 事件 │ 07 终端 │ 08 Buffer │ 09 Cursor │ 10 Mode
11 命令解析 │ 12 动作 │ 13 撤销 │ 14 IO │ 15 寄存器
16 屏幕 │ 17 状态栏 │ 18 行号 │ 19 视口 │ 20 输入
21 高亮 │ 22 搜索 │ 23 窗口 │ 24 宏
25 Python │ 26 插件 │ 27 API │ 28 插件实战
29 配置 │ 30 性能 │ 31 跨平台 │ 32 测试 │ 33 打包 │ 34 CI
35 总结(本篇)

浙公网安备 33010602011771号