zoxide

智能目录跳转工具,用 Rust 编写的 cd 替代品


⚡ 核心功能

  • 记录你经常访问的目录
  • 通过简短的名字快速跳转
  • 模糊匹配,智能排序
  • 支持所有主流 Shell

⚙️ 工作原理

zoxide 会记录每次 cd 操作到指定目录的上下文(访问次数、时间、路径深度),建立一个加权评分数据库。当你输入 z <目录名> 时,它根据评分算法返回最匹配的目录并自动跳转。


📦 安装

# macOS
brew install zoxide
 
# Linux
curl -Ls https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash
 
# Arch Linux
pacman -S zoxide

🔧 初始化配置

将以下内容添加到 Shell 配置文件(.zshrc / .bashrc):

# zsh
eval "$(zoxide init zsh)"
 
# bash
eval "$(zoxide init bash)"

然后重新加载配置:source ~/.zshrc


⌨️ 使用方式

基本跳转

# 跳转到最常访问的 Documents 目录
z doc
 
# 完整路径也可以
z /Users/zhangchen/Documents

交互式选择

# 显示匹配列表,选择后跳转
zi doc

仅查询不跳转

# 查询匹配结果,但不执行跳转
zq doc

其他命令

命令说明
zoxide query doc显示数据库记录
zoxide add /path/to/dir添加路径到数据库(不跳转)
zoxide remove /path/to/dir移除路径记录

📈 评分算法

zoxide 使用加权评分,综合考虑以下因素:

flowchart TD
    subgraph Factors [评分因素]
        F[频率: 访问次数]
        R[近期性: 最近访问]
        D[深度: 路径深度]
    end

    subgraph Rules [评分规则]
        F1[次数越多分数越高]
        R1[访问时间越近分数越高]
        D1[路径越深分数越高]
    end

    F --- F1
    R --- R1
    D --- D1

    F1 --> SCORE([计算总分])
    R1 --> SCORE
    D1 --> SCORE

    SCORE --> RESULT{匹配结果}
    RESULT --> |最高分| DOC[/Users/zhangchen/Documents/]
    RESULT --> |次高分| DOCS[/Documents/]

    style F fill:#e3f2fd,stroke:#1976d2
    style R fill:#e3f2fd,stroke:#1976d2
    style D fill:#e3f2fd,stroke:#1976d2
    style SCORE fill:#fff3e0,stroke:#f57c00
    style DOC fill:#e8f5e9,stroke:#388e3c
因素说明
频率访问次数越多,权重越高
近期性最近访问的目录优先
深度路径越深权重越高(减少与根目录冲突)

这使得 z doc 会跳转到 /Users/zhangchen/Documents 而不是 /Documents


💡 适用场景

场景说明
频繁切换深层目录不用再打完整路径
项目目录跳转在多个项目间切换
减少重复 cd在长路径目录间移动
替代 autojump更快的 Rust 实现,更好的跨平台支持

⚖️ 与 autojump 对比

特性zoxideautojump
语言RustPython
速度🚀 快🐌 较慢
跨平台✅ 完整支持⚠️ 部分支持
算法综合评分频率统计

⭐ 技巧

配合 fzf 使用

# 在 .zshrc 中配置
eval "$(zoxide init zsh --cmd j)"
bindkey '^j' autojump

别名优化

# 嫌 z 太短?用更多 alias
alias cd='z'
alias cdi='zi'

🔗 相关工具