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

最近把终端里的 cd 换成了 zoxide,用了两周,回头发现已经回不去原生 cd 了。

它的逻辑挺简单,不是按字母找目录,而是按你常用程度找。背后是 frecency 这套思路,frequency 叠上时序权重,进得越勤、最近越常去的目录排名越靠前。平时敲个 z 再加一两个关键字,它就直接把你送过去,不用再拼那一长串嵌套路径。我这种老项目堆了好几年、目录深得像井的人,体验尤其明显。

它跟 fzf 也能接上,补全变成交互式的,模糊匹配一打一个准。安装基本零配置,一行命令接管导航,跨平台也没毛病。工具这种东西,省下的零点几秒看着不起眼,攒一个月就真香了。

tender_2006
[链接]

我当年也用过 autojump,后来嫌它偶尔跳错目录,懒得调就弃了。zoxide 这套 frecency 思路听着比单纯按频率聪明些,最近常去的权重更高,确实更贴合平时的习惯。是呢你提到跟 fzf 接上那一段我挺心动,一直想弄又怕麻烦,既然一行就能接管,回头我也去装来试试。省那零点几秒平时不在意,真用顺了确实舍不得丢。

dr__jp
[链接]

顺着 frecency 这个机制多说两句。你描述的逻辑方向是对的,但"按常用程度找"这句话把过程简化了——zoxide 的 z 关键字 不是先检索关键词再定位,而是先对路径做模糊匹配(fuzzy match),把所有命中的候选按 frecency 排序取最高的那个。先"过滤"再"排序",这两步是分开的。

具体到算法,zoxide 移植的是 rupa/z 那套思路:recency 不是连续的时间衰减,而是分桶加权。一小时内的访问权重乘 4,一天内乘 2,一周内乘 1.5(具体乘数随版本可能略有出入,但分桶这个设计是稳定的)。所以你那句"最近越常去排名越靠前"严格讲只对前三个时段成立,更久以前的顺序就只看访问频次了。这个细节挺关键——它解释了为什么有些几个月没碰、但当年高频进过的目录,在你敲错关键字时依然会冒出来抢第一。

我自己的体会是,它真正省的不是那零点几秒,而是"回忆成本"。原生 cd 要求你记得完整路径,z 只要求你记得路径里的一两个碎片。这是质变不是量变:你不需要知道东西在哪儿,只要大概知道它叫什么。对深目录项目尤其明显,你帖里也提到了。

有个坑值得提醒:frecency 是"学"出来的。刚换上去头几天数据库是空的,体验可能还不如 cd;关键字同时命中两个目录时,它只认排名高的那个,不一定是你脑子里想的那一个。我一般会配 zi 走交互式确认,或者首次迁移时用 zoxide import 把别家的库直接导入,跳过冷启动。

你那台是单平台用,还是在多系统之间同步数据库?要是跨机器,datafile 路径和同步这块还有些讲究。

stone72
[链接]

年轻时我也折腾过一阵子这类小工具,后来发现越省事人越懒。你这 z 用着是顺,可别哪天离了它,连自家目录都摸不着门。

hacker_de
[链接]

我也用了一阵。补充个坑:两个目录关键字重叠时,z 不一定挑最近去的那个,会跳错。多打一个字或者 z

lyric__cn
[链接]

你那句"目录深得像井",莫名在我这儿落了根。其实一个替你记路的工具,说到底是在替懒散的记性还债,我们每天钻进钻出,真正会回去的从来只是那几处,和人的惯性原是一个道理。wallah,它偶尔把你送去的,有没有哪个是你自己都快忘了、却曾经天天泡着的地方?

byte2004
[链接]

我前阵子也切到 zoxide 了,深目录找起来确比原生 cd 省事,颇觉顺手。

补一个实用的点:它的数据库放在 ~/.local/share/zoxide/db.zo,换机器或重装前把这个文件备份走,你几年攒下的目录记忆就还在。我上次换笔记本没备份,老项目全得重新养权重,着实费了番工夫。

fzf 那块我这边默认装完补全还是普通的,得自己在 .zshrc 加段绑定才变交互式。零配置在我这儿没真的零。

不过它那个 frecency 有时也迷,刚进两次的目录就顶上来盖过常用的。你碰见过么?

tesla_q
[链接]

零配置这话得打个折。基础导航确实开箱即用,但帖子里说的 fzf 交互补全那块,我前阵子接的时候还是得在 rc 里自己挂一段补全函数,大概五六行,称不上"一行接管"。小事一桩,但说"基本零配置"稍微乐观了点。

倒是可以补一句帖子没提到的:zoxide 支持直接 import autojump、z、fasd 的旧数据,目录堆了好几年的老用户换工具第一天就能直接 z 跳,不用从零养权重,这个功能比你省下的那零点几秒实在多了。

dear2006
[链接]

我前两年也栽进过这路子的工具里,最先试的是 autojump,后来换成 zoxide,道理跟你说的差不多,都是拿频率当导航。你那句"目录深得像井"我太有画面了,我硬盘里也常年躺着几个埋得极深的文件夹,每次手动拼路径都觉得自己像在井下捞绳子。

不过用了段日子我发现一个小别扭:它太懂我了反而有时候不懂我。偶尔想拐去一个冷门目录,它总把我往那几个天天泡的地方送,还得再敲几下把它拉回来。没事的所以我现在的用法是分工——常去的丢给 z,临时起意要去的地方老老实实 cd,谁也不抢谁的活儿。是呢

fzf 那个补全你这么一说我倒想试试了,之前一直懒得配。工具嘛,确实是一点点省下来的功夫最经攒,日子久了人就变懒也变舒服了。回头我也去接上 fzf 玩玩,谢楼主种草 (笑)

hamster_ous
[链接]

目录深得像井这句太戳了 我那堆老项目也是 现在离了z简直不会走路

veteran_sr
[链接]

我两年前就换上这玩意儿了,回不去是真的。就是有时候远程到没装的老机器,手还是先敲 z,愣一下才反应过来。

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