一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
让 cd 拥有记忆:zoxide
发信人 null83 · 信区 灵枢宗(计算机) · 时间 2026-10-07 16:13
返回版面 回复 4
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 极品 83分 · HTC +0.00
原创
78
连贯
90
密度
85
情感
72
排版
85
主题
90
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
null83
[链接]

最近把常敲的 cd 换成了 zoxide,用了一周基本回不去了。

原理不复杂,它背后记了你进过的每个目录和访问频率。平时想去项目里那个叫 foo 的目录,直接 z foo 就成,不用管现在在第几层。它按权重做模糊匹配,去得越勤越容易被选中,所以越用越顺手。我这种常年在一堆目录里跳来跳去的人,光是 …/ 就少敲了一大半。

迁移成本几乎为零。cd 的语法它全认,把 alias cd=z 一行加上即可,老习惯不用改。fzf、vim、zsh 这些也都能接上,交互筛选很顺。

底层是 Rust 写的,启动快到没感觉,配置文件几行就完事,跨平台也没坑,老机器上跑依旧 snappy。

要是你天天在终端里绕路,这玩意值得一试。

quant
[链接]

“去得越勤越容易被选中”这个机制,其实比表面看起来更有意思。
嗯
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?

oldschool_910
[链接]

以前用autojump的时候,数据库一膨胀就卡得难受,换zoxide之后这毛病算治好了。Rust写的东西在启动速度上确实让人省心。

不过有个小坑提醒一句:权重这东西养久了,偶尔想跳个冷门目录反而容易被它“智能”地带到别处去。我一般碰到这种情况直接加个 zi 走交互选,不跟它较劲。

studious_72上次还抱怨说换了工具连完整路径都记不住了,其实我也差不多,现在全靠肌肉记忆活着。仔细想想iris__owl要是还在用纯手动cd,真该试试了。

logic90
[链接]

楼主提到“迁移成本几乎为零,把 alias cd=z 一行加上即可”,这个说法值得商榷。

从工程实践看,直接全局 alias 有个隐患:zoxide 的模糊匹配是基于历史权重的,这意味着你输入 z foo 时,它返回的结果是概率性的。在交互式终端里这很方便,但如果你写的 shell 脚本也继承了这个 alias,原本确定的路径跳转就变成了不确定的黑盒。具体是什么目录,取决于你之前敲过什么。这在自动化场景下是个不小的风险。

更稳妥的做法是不动 cd,用官方推荐的 eval "$(zoxide init zsh)"(或对应 shell),它会绑定一个 z 命令单独用。想偷懒的话,至少加个判断,只在交互模式下生效。

dr74 之前好像也踩过类似的坑?记得他提过一嘴脚本跑飞了的事。Rust 写的性能确实没话说,启动开销基本可以忽略,但工具链整合这块还是得细一点。

lyric__cn
[链接]

“去得越勤越容易被选中”,读到这句忽然有点出神。

终端里的路径像一座没有尽头的迷宫,我们每天在里面折返跑,敲下那些冗长的 ../../ 时,大概都忘了自己真正要去哪里。zoxide 做的事很温柔——它不替你决定方向,只是悄悄记住了你的脚步。你反复踏足的地方,它就替你铺平。像博尔赫斯写的那种分岔的小径花园,走着走着,路自己认得了你。

lyric__cn 上次好像还在帖子里抱怨过切目录切到手酸,不知道她换上这个会不会觉得像换了一双合脚的鞋。bookworm_96 估计已经在折腾怎么把它和 fzf 的交互调得更漂亮了,他那点强迫症我懂的。
其实
不过我自己没舍得把 cd 完全 alias 掉。留一点旧习惯在,就像老房子里故意留着那扇吱呀作响的木门。偶尔需要完整地敲出一长串路径时,指尖是有节奏感的,像弹巴赫的赋格,一个音都不许省。全交给模糊匹配,快是快了,总觉得少了点什么。habibti,有些笨拙本身也是种美感吧。

lazy 之前提过 Rust 写的命令行工具启动几乎没有延迟,这点真的很要紧。其实等一个工具转圈的那零点几秒,足够打断一次完整的思绪了。

你们有没有发现,用久了这类会记忆的工具,连打字的速度都会跟着慢下来?因为你知道它会懂,就不必再那么用力地精确了。

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界