公司动态

Zed 的搜索体验进化:从“光标猜词“到“记忆优先“

📅 2026/7/17 5:57:19
Zed 的搜索体验进化:从“光标猜词“到“记忆优先“
背景Zed 近期的一项新特性解决了一个看似微小却每天都在折磨开发者的问题当你用文本查找器定位到某个匹配项、编辑完文件、再重新打开查找器时上一次的搜索词丢失了——取而代之的往往是光标下某个毫不相干的单词。这次改进的核心是重新排序了搜索框 query seeding 的优先级把上次查询提到了光标下文字之前并且把过滤条件也一并持久化。改动前的优先级活动项目搜索查询活动缓冲区搜索查询选中文本或光标下文字空改动后活动项目搜索查询活动缓冲区搜索查询选中文本上次查询按项目持久化空同时团队明确提到“JetBrains makes the same choice, entirely ignores word on the cursor for seeding query.” 这不是拍脑袋的决定而是对成熟 IDE 设计哲学的致敬。JetBrains IDEA让工具记住你的意图JetBrains 家族IntelliJ IDEA、PyCharm、WebStorm 等的做法很有意思。它们完全忽略光标下的单词搜索框重新打开时要么保留上次的查询要么显示选中文本如果你确实选中了一段文字。这背后的产品哲学很清晰搜索是用户主动发起的意图表达不应该被被动的光标位置所干扰。在 IDEA 中“搜索-编辑-再搜索的循环非常顺畅。你可以在 20 个文件中找到所有TODO标记逐个修改每次重新打开查找框时它都记得你在找TODO。这种体验的核心不是方便”而是尊重用户的任务连续性。更重要的是JetBrains 的搜索过滤条件正则、大小写、全词匹配同样被持久化甚至跨会话。你上次开了正则搜索下次打开它还在。这种一致性降低了认知负荷——你不用每次重新确认我现在是不是在搜正则。idea还有一点做的很好的是支持查看搜索的历史只需要使用快捷键alt 下箭头据说vscode也可以使用整个快捷键查看历史列表但是实际上似乎并没有。Zed 为什么选择跟随 JetBrainsZed 作为一个用 Rust 编写、追求极致性能的新锐编辑器它的产品决策一直都很较真。这次新特性的选择不是简单的抄 IDEA而是对工作流连续性的深刻理解。在代码审查、批量重构、追踪引用等场景中开发者真正需要的是维持一个持续的搜索上下文。光标下的单词在绝大多数情况下只是噪音。Zed 的开发者说出了非常精准的一句话“After editing, the cursor is usually sitting on an unrelated word, and previous search was lost.” 这就是每天在发生的真实场景。把上次查询持久化到项目级别的数据库中意味着即使关闭项目、过几天再打开搜索上下文依然在。这种设计把搜索从一次性操作升级成了项目状态的一部分。JetBrains 走的是**“尊重用户意图路线**你告诉我什么我就记住什么我不瞎猜。搜索框是你的工具不是我的展示台。这种保守策略在智能化时代看似不够聪明”但在高频操作场景中反而更可靠。Zed 选择站在 JetBrains 这一边我觉得是正确的。对于一个定位为专业开发者编辑器的产品来说可预测性比聪明更重要。你永远不知道 VSCode 下次打开搜索框时会塞给你什么词但你知道 Zed和 IDEA会忠实地记住你上次搜过什么。当然这次更新也引发了一个有趣的后续讨论yara-blue 提出可以更进一步做可恢复的 picker——不是记住查询再重建而是压根不让 picker 真正关闭只是隐藏起来。这有点像某些浏览器的恢复关闭的标签页设计。这个方向如果落地搜索体验会再上一个台阶。结语这次新特性改动不大却触及了编辑器设计的核心问题工具应该在多大程度上帮助用户VSCode 的答案是尽可能多JetBrains 的答案是只在被明确要求时。Zed 选择了后者。对于每天要进行几十次搜索操作的开发者来说一个不会随意篡改你查询内容的搜索框可能比十个智能提示都更有价值。