zoxide 是一个更聪明的 cd 命令,旨在让你更快速的在目录之间来回切换。
我是在 YouTube 闲逛时看到这个项目的,感觉很不错就尝试了一下。事实证明,这个工具确实很方便。下文将详细阐述为什么我认为这是个好工具。
zoxide 有什么用处?
zoxide 受 z 和 autojump 启发而开发。它会记住你每一个 cd 命令的使用频次,这样你就可以快速切换到这些目录。这样说可能有点抽象,但你可以看下方的演示:

zoxide 还可以与 fzf 配合,以达到互动式的 cd 操作。
快速入手 zoxide
zoxide 支持各大主流操作系统,其安装也非常简单,在官方 README中有详细的教程可以查看,这里仅作简单概述。
安装
使用主流的包管理器即可安装 zoxide。对于 Windows,可以使用 winget:
|  |  | 
对于 Linux,使用任意的包管理器(除了 Ubuntu apt,因为更新太慢)安装 zoxide 包或使用安装脚本:
|  |  | 
在 shell 中配置
zoxide 支持各平台主流 shell 的配置,仅需将下面的命令输出保存进 shell 的配置文件即可:
|  |  | 
例如,对于 Bash,在配置文件中(通常是 ~/.bashrc)中加入以下行:
|  |  | 
具体支持的 shell 和配置所需的命令见 README。
需要注意的是,使用 zoxide 切换目录的命令默认是 z,但是如果你习惯使用 cd 浏览目录,你可以使用以下的 flag 直接替换 cd 或是自定义其他你喜欢的命令:
|  |  | 
同样的,使用 fzf 进行互动式 cd 的命令也会从 zi 变为 cdi。
使用体验
事实上,zoxide 的使用体验和 cd 基本无异。除了对 cd 本身特性(如使用 cd 回到 ~,使用 cd - 回到上个目录等),对于 cd 做了自动补全的 shell,用 zoxide 直接替换 cd 命令一样可以使用自动补全,非常方便。特别是对于路径长的一塌糊涂的 Windows,zoxide 确实能帮助我快速转到目标目录。比如说:我将我的作业代码全部放在 C:\Users\William\Desktop\Homework\Code 里,以前打开项目还需要我回到桌面,点击 Homework 文件夹,再点击 Code 文件夹,右击选择使用 Code 打开,现在可以启动 shell:
|  |  | 
完事!(注:我使用了 --cmd cd flag 配置。)
你问我为什么不把作业放到 Documents 文件夹下?因为这里是 Windows,而很多应用喜欢在这里面拉屎,把用户文件全扔在这里面(即使用户指定了其他的保存路径)。事实上,各种应用已经在我的 Documents 文件夹里已经堆了 41 个子文件夹了。同样对于 ~ Home 目录,也是一堆的 dotfiles 和不知名的应用写进去的文件夹。相比之下,只有 Desktop 桌面这个地方是干净的,因此所有的个人文件就放在了桌面下的一个统一的文件夹内(咱是不会让桌面堆满文件夹的)。
而对于 Linux,得益于目录结构的简洁与合理以及大部分 Linux 应用遵守规范,其帮助不是很显著,但是仍然能省去大部分记忆目录和 cd-ls 组合的时间。
比如说,我希望修改我的代理配置,我可以使用 cd v2ray 而非 cd /etc/v2ray;现在如果我还希望修改 fish 的配置文件,还可以直接 cd fish 而非 cd ~/.config/fish。对于需要在很多不同目录间来回切换的人,使用 zoxide 无疑是省时的。以及,在这个过程中完全不需要想某个配置文件在什么目录,直接无脑 cd 即可(当然,前提是你已经 cd 过了一次)。
至于使用 cdi 的场景,因为不太习惯用 fzf,所以还没有什么感想。
更高级的 zoxide 使用法
对于我这样的普通用户,深度使用 zoxide 的场景并不多,但 zoxide 的潜力不止于此。实际上,zoxide 可以模糊匹配目录。这里简单介绍一下其算法:
- 搜索时大小写不敏感。- cd foo可以匹配- /foo或者- /FOO。
 
- 可以使用多个关键词搜索(包括斜杠),但顺序必须正确。- cd fo ba可以匹配- /foo/bar,但不匹配- /bar/foo。
- cd fo / ba可以匹配- /foo/bar,但不匹配- /foobar。
 
- 最后一个搜索关键词和路径的最后一个组成部分匹配。- cd bar可以匹配- /foo/bar,不匹配- /bar/foo。
- cd foo/bar不匹配- /foo/bar/baz。
 
也就是说,如果我希望访问我的作业 Code 下的 Python 文件夹,除了打全名字,还可以使用更有效率的切换方式:cd code py。如果真的很会用这个工具的话,我认为应该能很有效的提高效率。
此外,zoxide 有许多三方支援,包括 Vim/NeoVim 等。对于重度的命令行使用者,这个工具应该会或多或少帮到你。
总结
zoxide 在使用上接近原生的 POSIX cd 体验,且对于其目录搜索和快速切换的功能做的也很方便。不管你在什么操作系统下,我都觉得 zoxide 完全可以替代原生的 cd(特别是对于 Windows 上需要和命令行打交道的人)。希望你能喜欢这个推荐吧!
