2026年 GitHub 热门 CLI 工具推荐:fzf、zoxide 与 eza
引言
在 GUI 大行其道的今天,命令行界面(CLI)依然是开发者最高效的工作阵地。一个好的 CLI 工具能够显著提升日常开发效率,让繁琐的操作变得行云流水。2026年,GitHub 上涌现出一批用 Rust、Go 等现代语言编写的高性能 CLI 工具,它们正在悄然改变终端用户的工作方式。
本文将介绍三个在 GitHub 上获得极高人气的命令行增强工具:fzf(模糊搜索神器)、zoxide(智能目录跳转)和 eza(现代化文件列表)。这三个工具各有所长,但共同的特点是:安装简单、上手容易、一旦用上就再也回不去。
工具一:fzf — 命令行模糊搜索神器
项目概览
- 项目名称:fzf
- GitHub 地址:github.com/junegunn/fzf
- Star 数:约 80,000+
- 开发语言:Go
- 开源协议:MIT
- 最新更新:2026年8月仍在活跃维护
fzf 是一个通用的命令行模糊搜索器(fuzzy finder)。它本身是一个 Unix 哲学的"只做一件事并做好"的工具——接收文本列表输入,让用户通过模糊匹配交互式筛选,然后输出选中的结果。但正是这种简洁的设计,让 fzf 可以与几乎任何命令行工具组合,创造出无限的可能。
核心功能
1. 极速模糊匹配算法
fzf 的核心是一个高效的模糊匹配算法。它支持:
- 模糊匹配:输入 "fzf" 可以匹配 "fuzzy-finder"
- 精确匹配:用单引号前缀('exact)进行精确子串匹配
- 前缀/后缀匹配:用 ^ 或 $ 锚定开头或结尾
- 反向匹配:用 ! 前缀排除匹配项
- 组合模式:可以用空格分隔多个搜索条件
搜索速度极快,即使面对几万条记录也能实时响应,这得益于 Go 语言的高性能实现。
2. 丰富的交互功能
fzf 提供了丰富的交互式操作: - 实时预览(preview window):可以在搜索时显示文件内容、git diff 等 - 多选模式:按 Tab 键可以选择多个条目 - 键绑定:支持自定义各种操作的快捷键 - 鼠标支持:在支持的终端中可以用鼠标点击选择
3. 开箱即用的集成
fzf 自带了与 shell 的深度集成: - Ctrl+R:搜索命令历史(替代传统的反向搜索) - Ctrl+T:搜索当前目录下的文件并粘贴路径 - Alt+C:搜索目录并直接 cd 进去 - vim 插件:在 Vim/Neovim 中使用 fzf 进行文件搜索、缓冲区切换等
这些集成让 fzf 几乎是"安装即用",不需要复杂的配置就能立刻提升效率。
安装方式
macOS(Homebrew):
brew install fzf
# 安装 shell 键绑定和补全
$(brew --prefix)/opt/fzf/install
Ubuntu/Debian:
sudo apt install fzf
使用 Git 安装(最新版本):
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
安装完成后,重启终端即可使用 Ctrl+R、Ctrl+T、Alt+C 等快捷键。
使用示例
1. 搜索文件并打开
# 用 vim 打开选中的文件
vim $(fzf)
2. 搜索并切换 Git 分支
git checkout $(git branch | fzf | tr -d ' *')
3. 搜索进程并 kill
kill -9 $(ps aux | fzf | awk '{print $2}')
4. 带预览的文件搜索
fzf --preview 'cat {}'
5. 与 fd 配合(更现代的 find)
export FZF_DEFAULT_COMMAND='fd --type f'
适用场景
fzf 的应用场景几乎是无限的,以下是一些典型场景:
- 文件快速定位:在大型项目中快速找到并打开文件
- 命令历史搜索:比默认的 Ctrl+R 强大得多的历史命令搜索
- Git 操作:切换分支、查看 commit、挑选 stash
- 进程管理:快速查找并管理进程
- Docker 操作:选择容器/镜像进行操作
- 任何列表筛选:只要能输出列表的命令,都可以用 fzf 来筛选
工具二:zoxide — 智能目录跳转工具
项目概览
- 项目名称:zoxide
- GitHub 地址:github.com/ajeetdsouza/zoxide
- Star 数:约 39,000+
- 开发语言:Rust
- 开源协议:MIT
- 最新版本:v0.10.x(2026年7月更新)
- 支持平台:macOS、Linux、Windows
zoxide 是一个更智能的 cd 命令。它会"记住"你访问过的目录,并根据访问频率和最近度(frecency 算法)进行排序,让你只需输入几个字母就能跳转到目标目录。
如果你用过 z.sh、autojump 或 fasd,那么 zoxide 可以看作是它们的现代化版本——用 Rust 重写,速度更快,功能更完善,维护更活跃。
核心功能
1. Frecency 排序算法
zoxide 的核心是 frecency(frequency + recency)算法。它综合考虑两个因素: - 频率(Frequency):目录被访问的次数越多,排名越高 - 最近度(Recency):最近访问过的目录排名会提升
这意味着 zoxide 的跳转建议会随着你的使用习惯自动调整,越用越顺手。
2. 交互式选择(z -i)
当搜索结果有多个匹配时,可以使用交互式模式:
z -i proj
这会打开一个类似 fzf 的选择界面(如果安装了 fzf 会自动使用 fzf),让你在多个匹配结果中选择。
3. 子目录跳转(zi)
除了全局跳转,zoxide 还支持子目录搜索:
zi # 在当前目录的子目录中搜索并跳转
这在深层目录结构中特别有用。
4. 多 Shell 支持
zoxide 支持几乎所有主流 shell: - bash - zsh - fish - PowerShell - Nushell - xonsh
而且配置方式非常简单,通常只需要一行初始化代码。
5. 跨平台同步
zoxide 的数据库是一个简单的文本文件,可以通过云盘(Dropbox、iCloud 等)在多台设备间同步,让你的目录访问习惯随身而行。
安装方式
macOS(Homebrew):
brew install zoxide
Ubuntu/Debian:
sudo apt install zoxide
Windows(winget):
winget install ajeetdsouza.zoxide
一键安装脚本:
curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash
Shell 配置(以 zsh 为例,在 ~/.zshrc 中添加):
eval "$(zoxide init zsh)"
重启 shell 后,你就拥有了一个更聪明的 cd。
使用示例
1. 基本跳转
# 跳转到名字包含 "project" 的最常访问目录
z project
# 跳转到名字包含 "foo" 和 "bar" 的目录
z foo bar
2. 交互式选择
# 当有多个匹配时,交互式选择
z -i docs
3. 子目录搜索
# 在当前目录的子目录中搜索
zi src
4. 查看排名
# 查看所有记录的目录及其排名
zoxide query -l | head -20
5. 与 fzf 集成
安装 fzf 后,z -i 会自动使用 fzf 作为选择器,体验更流畅。
适用场景
- 深度目录导航:当项目目录层级很深时,不用再一层层 cd
- 多项目切换:在多个项目之间快速跳转
- 减少记忆负担:不用记住完整的目录路径,输入几个字母就行
- 提升终端流畅度:目录跳转从"思考路径"变成"肌肉记忆"
工具三:eza — 现代化的 ls 替代品
项目概览
- 项目名称:eza
- GitHub 地址:github.com/eza-community/eza
- Star 数:约 23,000+
- 开发语言:Rust
- 开源协议:EUPL-1.2
- 最新版本:v0.23.x(2026年7月更新)
- 定位:ls 的现代化、社区维护替代品
eza 是传统 ls 命令的现代替代品。它在保持 ls 基本用法的同时,增加了大量实用功能和更友好的默认显示效果。eza 是 exa 项目的社区维护分支,继承了 exa 的所有优点,同时修复了一些问题并持续活跃开发。
核心功能
1. 彩色输出与图标
eza 默认就会用颜色区分不同类型的文件: - 目录:不同的颜色 - 可执行文件:醒目的颜色 - 符号链接:特殊标记 - 压缩包、图片、文档等:各有颜色
配合 Nerd Font 字体,还能显示文件类型图标,让目录结构一目了然。
2. Git 状态集成
这是 eza 最实用的功能之一。在 Git 仓库中使用 eza 时,它会在文件名旁边显示 Git 状态标记:
- N:新文件(New)
- M:已修改(Modified)
- D:已删除(Deleted)
- R:已重命名(Renamed)
- 等等
这样你不用输入 git status 就能快速了解哪些文件有变动。
3. 树状视图
eza 内置了类似 tree 命令的功能:
eza --tree --level=2
可以替代单独的 tree 命令,而且输出更美观。
4. 丰富的元数据显示
eza 可以显示各种文件元数据: - 文件大小(人类可读格式) - 权限位 - 所有者和组 - 修改时间、访问时间、创建时间 - inode 号 - 块数 - 扩展属性
5. 灵活的排序和筛选
- 按名称、大小、时间、版本等排序
- 支持
.开头的隐藏文件显示控制 - 支持按文件类型筛选
安装方式
macOS(Homebrew):
brew install eza
Ubuntu/Debian:
sudo apt install eza
Windows(winget):
winget install eza-community.eza
Cargo(Rust 包管理器):
cargo install eza
使用示例
1. 基本使用(替代 ls)
# 列出当前目录文件
eza
# 显示详细信息
eza -l
# 显示所有文件(包括隐藏文件)
eza -la
2. 显示 Git 状态
eza -l --git
3. 树状视图
# 显示 2 层深度的目录树
eza --tree --level=2
# 树状视图 + 详细信息 + Git 状态
eza -l --tree --git --level=2
4. 带图标显示
# 需要安装 Nerd Font 字体
eza --icons
5. 排序选项
# 按大小排序(最大的在前)
eza -l -s size -r
# 按修改时间排序(最新的在前)
eza -l -s modified -r
常用别名配置(推荐加入 ~/.zshrc 或 ~/.bashrc):
alias ls="eza --icons"
alias ll="eza -l --icons --git"
alias la="eza -la --icons --git"
alias lt="eza --tree --level=2 --icons --git"
适用场景
- 日常目录浏览:替代 ls,获得更好的视觉体验
- Git 项目开发:一眼看出哪些文件被修改了
- 代码审查前检查:快速查看项目结构和文件状态
- 终端美化:让你的终端看起来更专业、更现代
总结
fzf、zoxide 和 eza 这三个工具虽然功能各异,但它们有一个共同点:都是对传统命令行体验的现代化升级。它们不追求颠覆式的创新,而是在大家每天都在用的场景上,做到更快、更好、更顺手。
| 工具 | 替代对象 | 核心价值 | Star 数 | 语言 |
|---|---|---|---|---|
| fzf | Ctrl+R / find / grep | 交互式模糊搜索,万物皆可筛选 | ~80k | Go |
| zoxide | cd | 智能目录跳转,越用越懂你 | ~39k | Rust |
| eza | ls | 彩色图标 + Git 状态的文件列表 | ~23k | Rust |
组合使用,效率翻倍
这三个工具并不是互斥的,恰恰相反,它们组合使用能发挥出更大的威力:
- zoxide + fzf:用
z -i进行交互式目录跳转,在多个匹配结果中精准选择 - eza + fzf:用 fzf 筛选文件,选中后用 eza 查看详情
- 三者联动:用 zoxide 跳转到项目目录,用 eza 浏览文件结构,用 fzf 快速定位并打开文件
为什么推荐这三个工具
- 学习成本低:每个工具的核心用法几分钟就能掌握
- 性能优秀:Go 和 Rust 编写,启动速度极快,不拖慢终端
- 社区活跃:三个项目都在持续更新,Issue 响应及时
- 跨平台:macOS、Linux、Windows 全支持
- 不破坏原有习惯:它们都是"增强"而非"替代",原来的命令依然可用
如果你是终端重度用户,这三个工具绝对值得花 10 分钟安装配置。它们带来的效率提升可能不会让你立刻察觉,但用一段时间后再回去用原始的命令——你会发现已经回不去了。
终端效率的提升往往来自这些"小而美"的工具积累。今天就从这三个开始,打造属于你的高效终端环境吧。

评论(0)
暂无评论,来抢沙发~
请 登录 后发表评论