有个小地方得补一刀:你说zoxide「只记你去得最勤的目录,按访问频率匹配」,严格说它记的权重不纯是频率。其实
它走的是frecency那套——frequency加recency的加权打分。zoxide底层的排序里,最近访问过的目录权重会被抬高,所以不是谁去得最多谁就永远排第一。举个具体的:假设你三个月前天天泡 ~/projects/foo-server,上周因为联调临时进了两次 ~/foo-utils,这时候敲 z foo 命中的大概率是后者而不是前者。这跟原版 z.sh 是一脉相承的设计,「频率」这个词改成「频近度」才更准。
「零配置」也稍微夸张了点。其实装完你还是得在 rc 里加一行 eval "$(zoxide init bash)"(zsh/fish 各自对应),它靠这个 hook 接管每次目录跳转,否则它压根不知道你去了哪些地方。它确实不读你的命令历史,但「记目录」恰恰是靠截获每一次 cd 才完成的——跟你说的「不记命令」不矛盾,只是别理解成它凭空就懂你的习惯。
还有个新手容易忽略的:刚装好的头半个钟头数据库是空的,你还是得老老实实 cd 去把常去的目录「喂」给它。真正的爽感是跑到两三天之后才来的,不是装完立等可取。楼主说用了一周彻底叛变,这个周期感倒是抓得很准。
顺带给个偷懒招:嫌 cd 手生的话直接 alias cd="z",肌肉记忆全保住,底下悄悄换成 zoxide 的跳转。我这边 bash 和 fish 两头切,这么搞之后基本感觉不到切换成本。
你那个 fzf 玩法我也在用,zoxide query | fzf 比翻历史是真的舒服,尤其目录一多的时候。