当前位置: 首页 > news >正文

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

背景

Zed 近期的一项新特性解决了一个看似微小却每天都在折磨开发者的问题:当你用文本查找器定位到某个匹配项、编辑完文件、再重新打开查找器时,上一次的搜索词丢失了——取而代之的往往是光标下某个毫不相干的单词。这次改进的核心,是重新排序了搜索框 query seeding 的优先级,把"上次查询"提到了"光标下文字"之前,并且把过滤条件也一并持久化。

改动前的优先级:

  1. 活动项目搜索查询
  2. 活动缓冲区搜索查询
  3. 选中文本光标下文字

改动后:

  1. 活动项目搜索查询
  2. 活动缓冲区搜索查询
  3. 选中文本
  4. 上次查询(按项目持久化)

同时,团队明确提到:“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 为什么选择跟随 JetBrains

Zed 作为一个用 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 选择了后者。对于每天要进行几十次搜索操作的开发者来说,一个不会随意篡改你查询内容的搜索框,可能比十个智能提示都更有价值。

http://www.jsqmd.com/news/1204828/

相关文章:

  • 大模型量化技术:AWQ原理与实战部署指南
  • CentOS Stream9下BIND9 DNS服务器搭建与优化指南
  • FPGA实现GT高速收发器+Reed-Solomon编解码数据通信架构,提供7套工程源码和技术支持
  • 飞腾派4G版开发指南:硬件解析与OpenKylin系统实战
  • 具身智能工程化跃迁:从能动到敢用的三重生死线
  • C++11异步线程池:从生产者-消费者模型到std::future的完整实现
  • 企业 AI 成本治理实战:RAG、Agent、模型路由与上线前检查清单
  • MemGen: Weaving Generative Latent Memory for Self-Evolving Agents——为自进化代理编织生成式潜在记忆
  • 2026年7月最新亨得利官方服务项目及价格查询|网点地址与客服电话权威信息公告 - 亨得利官方
  • 深入解析进程名:从原理到实践的全方位指南
  • 大模型微调技术:原理、实践与行业应用
  • UE5蓝图与UMG实战:从零构建智慧城市数字孪生Demo
  • WSL2与Windows Terminal开发环境配置指南
  • Unix/Linux系统编程核心原理与实践指南
  • 基于Dify与蓝耘MaaS构建企业知识库问答系统
  • C++ STL next_permutation 与 prev_permutation 函数:原理、应用与避坑指南
  • 解决VMware虚拟机Ubuntu剪贴板共享问题
  • 深入理解JWT:从核心原理到安全实践,构建无状态认证系统
  • FakeItEasy性能优化:大规模测试套件中的高效模拟策略
  • C/C++实现数值积分:从梯形法到自适应辛普森法的工程实践
  • Windows 10 ARM版22H2架构特性与优化指南
  • 亲身到店探访沈阳亨得利官方名表服务中心|全新电话和网点地址(2026年7月更新) - 亨得利官方博客
  • FPGA开发中JTAG接口故障排查与调试技巧
  • 音视频修炼之前置工具链(四):AS+VSCode+Vim工具链
  • 如何彻底解决游戏输入冲突:3分钟掌握Hitboxer终极操作优化技巧
  • 7分钟手臂塑形训练:告别拜拜肉的科学方案
  • 600ms实时响应!视频会议+端侧数字人+Dify知识库,秒搭你的专属AI数字人
  • 小米铁蛋2.0技术解析:人形机器人如何实现真实场景可靠运行
  • AI技术全景:从机器学习到深度学习实战指南
  • 湖北音响改装门店探索:武汉声动汽车音响的音响改装方案与痛点破解之道,问界原车音响升级/音响改装,音响改装旗舰店找谁 - 音响改装门店分享