Ki Editor:不选字符、选语法树节点的多光标模态编辑器

编辑器
Rust
开源
工具
2026/9/29
·

阅读时间: 大约 7 分钟

Ki Editor:不选字符、选语法树节点的多光标模态编辑器

Ki Editor 官方演示:一键选中最大语法节点(GIF)

过去十年编辑器创新几乎全被 AI Copilot 占了头条,Ki Editor 却回到一个更底层的问题:我们选代码的方式本身就是错的。普通编辑器里你用鼠标拖或方向键选字符,编辑”函数”、“整个 if 块”、“这个表达式”这种语法结构时,要和缩进、括号、换行搏斗半天。Ki Editor(ki-editor.org,MPL-2.0)的答案是:直接把语法树节点作为一等公民——函数、循环、表达式都是可以整体选中、移动、复制、删除的对象,再叠加多光标做批量操作。本文基于官方文档与仓库实读。

一、三个设计主张

官方首页把定位讲成三句话:

  1. First-class syntax node interaction:直接操作语法结构,“缩短编码意图与动作之间的距离”,不用鼠标/键盘体操;
  2. Multiple cursors:多光标并行操作多个语法节点,做批量重构;
  3. Redefine modal editing:用统一的”Selection Modes”把按词、按行、按语法节点的移动统一成同一套逻辑。

底层技术栈很能说明问题:仓库代码 71.8% Rust、23.7% Tree-sitter Query——也就是说它不是”文本编辑器附带 Tree-sitter 高亮”,而是把 Tree-sitter 的解析树当成编辑操作的唯一坐标系。所有”选中”都发生在 AST 节点上,不是字符位置上。

Ki Editor 官方演示:复制语法节点(GIF)

二、它实际怎么工作

从官方文档的四个演示 GIF 能看出交互范式:

  • select-largest-node:一个按键把选区从光标处的小节点扩到最大可选中节点(比如从 a+b 扩到整个 return 语句);
  • delete-node:删掉整个节点而不留下语法残骸;
  • duplicate-node:复制整个函数/表达式节点;
  • remove-unused-imports:结构化重构操作。

这和 Lisp 圈的 Paredit 思路一脉相承——Koala 点评也点出了这个渊源:“结构化编辑不新鲜,Paredit 在 Lisp 社区验证多年,但推广到通用语言一直是难题”。Ki 的赌注是 Tree-sitter 已经为几百种语言做了 AST,这个”难题”的基础设施终于齐了。

三、成熟度:早期实验,不是生产力替代品

必须把仓库现状讲清楚:

  • 总共只有 4 个 release(最新还挂着”Latest master build”);
  • 58 个贡献者(社区活跃,但分散);
  • 挂着 177 个 open issue;
  • 已经有 JetBrains 插件目录(ki-jetbrains,Kotlin 写的协议层);
  • 社区聊天跑在 Zulip 免费云上。

这是一个设计驱动、正在快速演进的早期项目,不是打磨完成的编辑器。它没有 LSP 深度集成、没有成熟插件生态、键盘映射对新用户陡峭——官方自己把目标用户描述为愿意学习一套新肌肉记忆的人。

四、口径与局限

  1. “效率提升很明显”是方向性判断,没有量化数据。 官方没有给与 VS Code/Neovim 的对照 benchmark——结构化编辑的效率优势高度依赖个人熟练度,很难公平测量。
  2. 结构化编辑的天花板在语言差异。 Tree-sitter 能解析语法,但”什么是值得选中的有意义节点”对每门语言的语义理解深度不同;对动态脚本的字符串、模板、宏,AST 节点边界未必符合直觉。
  3. 模态编辑器的固有门槛。 它走 modal editing 路线(类似 Vim),统一 Selection Modes 是改进,但学习成本仍然劝退普通用户。
  4. AI 时代的定位尴尬。 Koala 点评那句”Agent coding 盛行时,编辑器创新看起来像学术研究而非生产力工具”很尖锐——当 Agent 能直接改代码,手动编辑效率工具的边际价值在缩小。Ki 押注”人在环上的精确结构化操作”,这在 Agent 时代是否还是刚需,有待验证。
  5. MPL-2.0:弱 copyleft,自用/二次开发友好,与闭源插件生态结合时需注意传染范围。

五、客观评价

优势:

  • 方向正确:AST 作为编辑坐标系是长期正确的抽象;
  • Rust + Tree-sitter 技术栈现代,性能底子好;
  • 多光标 + 结构化节点的组合在批量重构场景确实有想象力;
  • 社区活跃、设计文档清楚。

局限:

  • 极早期(4 个 release),功能完整度远不及成熟编辑器;
  • 学习曲线陡峭,迁移成本高;
  • 无量化效率证明;
  • AI Agent 时代,手动编辑效率工具的市场本身在收窄。

六、谁该关注

对编辑交互本身有研究兴趣的开发者、喜欢折腾 Vim/Emacs 模态操作的 power user、想做”下一代编辑器”原型的人——Ki 是一个值得读源码的样本(Rust + Tree-sitter + 节点操作的实现方式)。把它当主力编辑器替换 VS Code/Neovim 目前不现实,插件生态和打磨都不够。它更像是一张关于”编辑交互可以是什么样”的思想实验,等它成熟度上来再看。

参考来源