终端里每天敲几百次的cd,被这个Rust工具重写了
终端里每天敲几百次的cd,被这个Rust工具重写了
cd命令是程序员每天用得最多的Shell命令之一。进入项目目录、切到配置文件路径、跳转到日志目录,一天几百次。目录层级浅的时候敲路径不费力,一旦深到三四层,路径记忆就变成负担,tab补全、ls查看、再cd,一套组合拳下来,十几秒就没了。
zoxide是一个Rust编写的cd替代工具,目前在GitHub获得3.6万Star,灵感来源于经典的z和autojump。它的核心原理是记录你访问过的每个目录,根据访问频率和新鲜度自动维护一个评分数据库。当你输入 z foo,它不会让你补全路径,而是直接跳到分数最高的匹配目录。

用法:用关键字代替路径
zoxide的核心命令是 z。z foo 跳转到历史记录中匹配"foo"排名最高的目录。z foo bar 匹配同时包含"foo"和"bar"的目录。zi 则调用fzf弹出交互式选择界面,输入关键字实时过滤候选目录,选中即跳转。bash 4.4以上、zsh和fish用户还能用 z foo<SPACE><TAB> 触发交互式补全。
它也兼容普通cd的全部用法:z ~/foo、z ..、z - 返回上一个目录,全部正常工作。你不需要在cd和z之间做心智切换,z相当于cd的完整超集。
安装:全平台、全Shell覆盖
操作系统层面支持Linux(几乎覆盖了所有主流发行版,从Arch到Fedora到Void Linux)、macOS(Homebrew和MacPorts)、Windows(winget、Scoop、Chocolatey)、BSD系列和Android的Termux。
Shell层面,bash、zsh、fish、PowerShell、Nushell、Elvish、Xonsh、Tcsh,以及通用POSIX Shell,全部有对应的初始化配置。Windows用户用PowerShell或Git Bash都能正常使用,winget一行命令即可完成安装。
安装后只需在shell配置文件末尾加一行eval初始化代码,重新打开终端就能用。

零迁移成本
如果你之前用z、autojump、fasd、z.lua或zsh-z,zoxide提供了 zoxide import 子命令,可以直接导入这些工具积累的历史目录数据。已有的使用习惯不需要从零开始,切换到zoxide只是一条命令的事。
生态集成:从文件管理器到编辑器
zoxide已被大量第三方应用集成,已经从独立工具演化为终端工作流的一层基础设施。
文件管理器方面,yazi、lf、ranger、nnn、joshuto、felix、xplr都通过原生支持或插件与zoxide协作,在文件管理器内跳转目录时直接使用zoxide的评分数据。编辑器方面,vim和neovim有zoxide.vim和telescope-zoxide插件,Emacs有zoxide.el。tmux会话管理工具如sesh和tmux-sessionx也内置了zoxide。macOS用户还能在Alfred和Raycast启动器中直接用zoxide跳转目录。
这种插件覆盖广度,意味着不管你在哪个终端工具里操作,zoxide的目录评分数据都能复用。
可配置性
zoxide的环境变量配置项不多但直击要害:
_ZO_DATA_DIR指定数据库存储目录,方便跨设备同步_ZO_EXCLUDE_DIRS排除不想要的目录(默认排除$HOME,避免根目录污染评分)_ZO_MAXAGE控制数据库最大条目数(默认10000条,配合内置的aging算法自动淘汰低分路径)_ZO_RESOLVE_SYMLINKS控制是否跟随符号链接_ZO_FZF_OPTS自定义fzf选项,比如调整预览窗口或搜索模式
zoxide init --cmd 可以自定义命令前缀,改成 j 和 ji,或者直接替换原生cd命令。
适用场景和局限性
zoxide适用场景很明确:每天在终端中频繁切换多个固定项目目录的开发者。如果你主要在单一项目内工作,或用VS Code等IDE内置终端且习惯GUI切换目录,zoxide的收益会相对降低。
zoxide需要先积累cd操作才能发挥评分跳转的优势。刚安装的前几天,保持正常cd习惯,让数据库自然积累即可。对于WSL或远程SSH环境,zoxide同样适用,在远程机器的Shell配置中添加一行初始化代码就能工作。
需要注意的一点是,部分滚动更新的Linux发行版(如Debian、Ubuntu)的软件源更新较慢,建议用安装脚本而非apt安装,确保拿到最新版本。
浙公网安备 33010602011771号