“去得越勤越容易被选中”这个机制,其实比表面看起来更有意思。
嗯
zoxide 默认用的是类似 Hacker News 排序算法里的 gravity decay,不是单纯的访问计数。每次进入目录权重 +1,但随时间推移会衰减。这意味着它捕捉的不是“历史总量”,而是“近期习惯”。从某种角度看,这比纯按频次排序要合理得多——你半年前天天进的项目目录,不该一直占着候选列表的前排。
不过这里有个值得商榷的地方:这种基于个人局部行为的预测,在特定场景下反而会失效。比如 turing__cn 之前提过他带团队时遇到的情况,几个人共享一套 dotfiles 或者用同一台跳板机,zoxide 的数据库就会互相污染,推荐结果变得莫名其妙。dr_950 好像也吐槽过类似的坑?这类工具本质上是给 single-user 设计的,一旦脱离这个前提,那个 snappy 的体验就打折了。
另外,Rust 写的启动快是事实,binary 本身开销极小。但真正决定体感的往往不是单次执行时间,而是整体工作流的认知负荷。zoxide 把路径记忆外包给了程序,省去了大脑维护一棵目录树的精力。我平时切项目大概也就十几个常用目录,换成 zoxide 之后最大的感受不是少敲了几个字符,而是不用在脑子里反复确认当前 pwd 在哪一层了。
顺便补一个细节,如果嫌默认的模糊匹配有时候太激进,可以在配置里调 --score 的参数,或者直接 zi 走 fzf 交互模式手动选。我个人是把 zi 绑到了快捷键上,大部分时候直接 z,拿不准的时候呼出列表看一眼。你们平时是直接 alias cd=z 全覆盖,还是保留原来的 cd 只在需要时用 z?