在终端里频繁切换项目目录时,传统 cd 最大的问题是:你得记住完整路径,还要不停敲 Tab 补全。zoxide 的思路很简单:它会根据你日常进入目录的频率和最近使用时间,给目录打分;你只要输入几个关键字,它就能猜到你要去哪里。再配合 fzf 的模糊搜索,你甚至可以在候选列表里“选目录”。
这套组合特别适合:多仓库开发、资料/下载目录很杂、经常在不同磁盘/挂载点切换的人。
zoxide:https://github.com/ajeetdsouza/zoxide
fzf:https://github.com/junegunn/fzf
macOS(Homebrew)
brew install zoxide fzf
Ubuntu/Debian(apt + 发行版包为主)
不同发行版仓库里 zoxide 版本可能不一致;如果你希望用较新版本,可以考虑用 cargo 安装。这里先给一个通用写法:
sudo apt update
sudo apt install -y zoxide fzf
Windows(PowerShell + winget)
winget install -e --id ajeetdsouza.zoxide
winget install -e --id junegunn.fzf
zoxide 的核心是“初始化脚本”。你只要把它追加到对应的配置文件里,之后就能用 z(或你自定义的别名)进行跳转。
zsh(macOS 常见)
把下面这行加到 ~/.zshrc 末尾:
eval "$(zoxide init zsh)"
bash
把下面这行加到 ~/.bashrc(或你的 bash profile)末尾:
eval "$(zoxide init bash)"
PowerShell(Windows)
把下面这行加到你的 PowerShell Profile(如 $PROFILE 指向的脚本)里:
Invoke- (&zoxide init powershell | Out-String)
改完配置后,重新打开终端,或手动重载配置文件。
基础用法非常直观:你先正常进入过几个目录,zoxide 才能建立索引;之后就可以用关键字跳转。
示例 1:直接跳转
z project
如果你的历史里有 ~/work/project-a、~/work/project-b 之类目录,zoxide 会根据得分选择最可能的那个。
示例 2:多关键词更稳
z work api
关键词越具体,误判越少。
如果你想在候选列表里用方向键选目录,可以把 zoxide 的交互模式和 fzf 结合。zoxide 自带一个交互命令(不同版本命令名可能略有差异),思路是:把候选交给 fzf 过滤,然后把选择结果再 cd 过去。
这里给一套“思路型”配置:在你的 shell 里做一个函数,读取 zoxide 的查询结果,再丢给 fzf。以 zsh/bash 为例(加入 ~/.zshrc 或 ~/.bashrc):
zi() {
local dir
dir=$(zoxide query -l | fzf --height 40% --reverse) || return
cd "$dir" || return
}
之后你就可以:
zi
注意:这里用的是 zoxide query -l 输出列表;如果你的版本命令不同,请以项目文档为准。
1)输入 z 没反应/提示找不到命令:通常是初始化脚本没有生效。检查你的 rc/profile 文件是否写对了 shell 类型;重新打开终端确认。
2)候选不准:多用几天、用更具体的关键词;或者先 cd 一次到目标目录让它加权。
3)Windows PowerShell 执行策略报错:优先用官方文档建议的方式创建 Profile;如果你的环境限制脚本执行,请遵循公司/系统策略处理,避免随意放宽安全设置。
zoxide 解决的是“记忆与排序”,fzf 解决的是“快速筛选”。两者结合后,你会明显减少路径输入、Tab 补全和目录查找时间。建议先只启用 zoxide(成本最低),熟悉后再加入 fzf 的交互函数。