你的终端是否看上去平平无奇,使用上也不那么顺手便捷呢,不妨试试下面的这些扩展让你的终端更好用。
- eza: 终端文件图标、颜色、git 状态
- yazi:终端文件管理器,预览、操作文件
- btop:终端任务管理器,任务监控
- duf:终端磁盘空间查看工具,磁盘信息
- bat:终端文件查看工具,语法高亮
- fastfetch:终端系统信息查看
- fzf:终端模糊查找器,模糊匹配
- fd:终端查找器,替代
find - ripgrep:终端文本搜索工具
- zoxide:终端记忆跳转路径,记住敲过的路径快速跳转
- lazygit:终端Git界面
- lazydocker:终端Docker界面
- zellij:终端复用器,分屏、Session 管理
- cmux:垂直标签页和通知功能的终端软件,适用于 AI 编码代理
eza
在使用 ls 之类查看文件时,很难区分文件还是目录,eza 可以列出文件列表的图标、颜色、git 状态。
https://github.com/eza-community/eza
安装
brew install eza
集成
打开 ~/.zshrc,把下面这些别名追加到文件末尾:
# 使用 eza 代替传统的 ls,添加图标、显示 Git 状态、按目录优先排序
alias ls='eza --icons --git --group-directories-first'
alias ll='eza -lh --icons --git --group-directories-first'
alias lt='eza --tree --level=2 --icons' # 树状显示,洞察项目结构
也可以对日期时间格式化的显示:
--time-style='default', ' iso', ' long-iso', ' full-iso', ' relative’
自定义格式化:例如,' +%Y-%m-%d %H:%M' => ' 2023-09-30 13:00’
参考:https://docs.rs/chrono/latest/chrono/format/strftime/index.html
alias ls='eza --icons --git --group-directories-first --time-style="+%Y-%m-%d %H:%M:%S %a"'
alias ll='eza -lh --icons --git --group-directories-first --time-style="+%Y-%m-%d %H:%M:%S %a"'
保存之后执行 source ~/.zshrc 生效。
用法
ls
ll
lt


yazi
yazi 终端里的文件管理器,可以在终端里浏览、打开、操作文件。
https://github.com/sxyazi/yazi
安装
brew install yazi ffmpeg-full sevenzip jq poppler fd ripgrep fzf zoxide resvg imagemagick-full font-symbols-only-nerd-font
brew link ffmpeg-full imagemagick-full -f --overwrite
如果你的 Mac 终端输入 yazi 无法预览图片,报错:
failed to spawn chaa: no such file or directory
需要安装以下依赖:
# macOS
brew install chafa
# Ubuntu/Debian
sudo apt-get install -y chafa ueberzugpp
# 检查命令
# 检查终端图像协议支持
echo $TERM
# 验证图像支持
yazi --version | grep -i image
集成(可选)
打开 ~/.zshrc,把下面这段追加到文件末尾(可选):
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
command yazi "$@" --cwd-file="$tmp"
IFS= read -r -d '' cwd < "$tmp"
[ "$cwd" != "$PWD" ] && [ -d "$cwd" ] && builtin cd -- "$cwd"
rm -f -- "$tmp"
}
保存之后执行 source ~/.zshrc 生效。
然后就可以在终端输入 y 替代 yazi 来启动 Yazi。
配置
Yazi 共有三个配置文件:
yazi.toml- 常规配置。keymap.toml- 按键绑定配置。theme.toml- 颜色方案配置。
- 新建文件
~/.config/yazi/yazi.toml
显示隐藏文件
在文件名之后显示符号链接指向的路径
[mgr]
show_hidden = true
show_symlink = true
- 新建文件
~/.config/yazi/keymap.toml
输入模式下按下
<Esc>键时执行同时关闭输入并清除过滤器
[[input.prepend_keymap]]
on = "<Esc>"
run = ["close", "mgr:escape --filter"]
desc = "Close input and cancel the filter"
用法
参考:https://yazi-rs.github.io/docs/quick-start#selection
导航
| 绑定 | 备用键 | 行动 |
|---|---|---|
| k | ↑ | 向上移动光标 |
| j | ↓ | 向下移动光标 |
| l | → | 进入鼠标悬停的目录 |
| h | ← | 离开当前目录,进入其父目录 |
文件操作
| 绑定 | 行动 |
|---|---|
| o | 打开选定的文件 |
| O | 以交互方式打开选定的文件 |
| Enter | 打开选定的文件 |
| Shift+Enter | 以交互方式打开选定文件(某些终端尚不支持此功能) |
| Tab | 显示文件信息 |
| y | 复制选定文件 |
| x | 剪切选定文件 |
| p | 粘贴已复制的文件 |
| P | 粘贴复制的文件(如果目标位置已存在则覆盖) |
| Y或者X | 取消 yank 状态 |
| d | 将选定的文件删除到垃圾桶 |
| D | 永久删除选定文件 |
| a | 创建一个文件(目录以 / 结尾) |
| r | 重命名选定文件 |
| . | 切换隐藏文件的可见性 |
复制路径
c⇒d表示先按下一个c键,然后再按下另一个d键。
| 绑定 | 行动 |
|---|---|
| c⇒c | 复制文件路径 |
| c⇒d | 复制目录路径 |
| c⇒f | 复制文件名 |
| c⇒n | 复制文件名(不带扩展名)。 |
过滤文件
| 绑定 | 行动 |
|---|---|
| f | 过滤文件 |
查找文件
| 绑定 | 行动 |
|---|---|
| / | 查找下一个文件 |
| ? | 查找上一个文件 |
| n | 前往下一个找到的 |
| N | 转到上一个找到的 |
搜索文件
| 绑定 | 行动 |
|---|---|
| s | 使用fd按名称搜索文件 |
| S | 使用ripgrep按内容搜索文件 |
| Ctrl+s | 取消正在进行的搜索 |

btop
btop 一个更好看的终端任务管理器。
top/htop:老式监控btop:更直观好用 + 图形化
https://github.com/aristocratos/btop
安装
brew install btop
用法
# 默认
btop
# 显示/隐藏布局
1 / 2 / 3 / 4
# 选择进程
↑ ↓
# 搜索进程
/
# kill进程
k

duf
duf 一个更好看的磁盘空间查看工具。
df:普通列表信息duf:显示信息更清晰
安装
brew install duf
集成
打开 ~/.zshrc,把下面这些别名追加到文件末尾:
# 替代 df
alias df='duf'
保存之后执行 source ~/.zshrc 生效。
用法
# 默认
duf
# 指定设备/路径
duf /home
# 只看特定类型
duf --only local
# 排除某些类型
duf --hide-mp /proc,/sys
# 输出格式
duf --json
# 按大小排序
duf --sort size

bat
bat 一个更好看的 cat 文件查看工具。
- 语法高亮
- Git 集成
- 显示不可打印字符
- 自动分页
https://github.com/sharkdp/bat
安装
brew install bat
集成
打开 ~/.zshrc,把下面这些别名追加到文件末尾:
# 替代 cat
alias cat='bat'
保存之后执行 source ~/.zshrc 生效。
用法
# 显示单个文件
bat [xxx]
# 显示多个文件
bat [src/*.rs]
# 输入读取
curl -s https://sh.rustup.rs | bat
# 输入读取,显式指定语言
yaml2json .travis.yml | json_pp | bat -l json
# 显示不可打印字符
bat -A [/etc/hosts]
# 不分页输出
bat --paging=never [xxx]
# 查看支持语言
bat --list-languages

fastfetch
获取系统信息并以美观的方式呈现,更快更现代的 Neofetch。
Fastfetch:启动极快Neofetch:启动相对慢
https://github.com/fastfetch-cli/fastfetch
安装
brew install fastfetch
用法
fastfetch

fzf
fzf 一个通用的命令行模糊查找器。
https://github.com/junegunn/fzf
搭配 fd、ripgrep(rg) 使用更强大
安装
brew install fzf
集成
打开 ~/.zshrc,把下面这段追加到文件末尾:
# Set up fzf key bindings and fuzzy completion
source <(fzf --zsh)
保存之后执行 source ~/.zshrc 生效。
用法
# 选文件
# 会列出当前目录所有文件
# 输入关键词过滤 → 回车选中
fzf
# 管道
ls | fzf
ps aux | fzf
# 搭配 fd
fd | fzf
# 配合 rg
rg keyword | fzf
fd
fd 一个简单 + 快的 find 替代品。
- 语法简单
- 搜索更灵活
- 速度很快
- 批量执行命令
- 结果更清晰
安装
brew install fd
使用
# 模糊匹配(递归查找)
find [xxx]
# 区分大小写
fd -s [xxx]
# 某种文件类型
find -e [py]
# 正则匹配
fd '^test$'
# 隐藏文件
fd -H [.xx]
# 仅目录
fd -t d [xxx]
# 仅文件
fd -t f [xxx]
# 搜索深度
fd keyword -d 2 [xxx]
# 接执行命令
fd py -x python [xxx]
# 批量操作
fd log -X rm [xxx]
# 配合 fzf
fd | fzf

ripgrep
ripgrep(rg) 超快的代码/文本搜索工具(grep 的升级版)。
- 速度极快(Rust)
- 递归搜索
- 自动忽略(遵循 .gitignore 规则)
https://github.com/BurntSushi/ripgrep
安装
brew install ripgrep
使用
# 搜关键词
rg [xxx]
# 正则搜索
rg ["h.*o"]
# 指定目录搜索
rg [xxx] [/src]
# 忽略大小写
rg -i [xxx]
# 文件类型搜索
rg [xxx] -g ["*.py"]
# 只显示匹配内容
rg -o [xxx]
# 完全匹配
rg -w [xxx]
# 目录深度
rg [xxx] --max-depth 2
# 包含隐藏文件
rg [xxx] --hidden
# 包含 gitignored 文件(慎用)
rg [xxx] -uuu
# 列出文件名
rg -l [xxx]
# 列没有匹配的文件
rg -L [xxx]
# 统计匹配行数
rg -c [xxx]
# 配合fzf
rg [xxx] | fzf

zoxide
zoxide 是一个更智能的 cd 命令,其灵感来源于 z 和 autojump。
它会记住你最常用的目录,这样你只需按几下键就能“跳转”到这些目录。
cd: 只能“精确路径”zoxide: 支持模糊匹配、支持关键词跳转
https://github.com/ajeetdsouza/zoxide
安装
brew install zoxide
集成
打开 ~/.zshrc,把下面这些别名追加到文件末尾:
eval "$(zoxide init zsh)"
# 替换/增强(可选)
alias cd='z'
保存之后执行 source ~/.zshrc 生效。
用法
# 基础跳转
z [目录]
# 精确路径
z [~/xxx]
# 查看记录
zoxide query
# 删除记录
zoxide remove [/xxx]
# 手动更新记录
zoxide add [/xxx]

lazygit
一个简单的 git 命令终端界面。
- 用“界面操作”代替手打 git 命令
- 可以查看 commit、分支、diff、stash
- 支持 提交、合并、切换分支、解决冲突
https://github.com/jesseduffield/lazygit
安装
brew install lazygit
集成(可选)
打开 ~/.zshrc,把下面这些别名追加到文件末尾:
lg() {
export LAZYGIT_NEW_DIR_FILE=~/.lazygit/newdir
lazygit "$@"
if [ -f $LAZYGIT_NEW_DIR_FILE ]; then
cd "$(cat $LAZYGIT_NEW_DIR_FILE)"
rm -f $LAZYGIT_NEW_DIR_FILE > /dev/null
fi
}
保存之后执行 source ~/.zshrc 生效。
用法
# 启动
lazygit
lg
# 默认相当于git status
# 添加文件(git add)
用 ↑ ↓ 选文件
按:space
# 提交 commit
c
输入 commit message → 回车提交
# push / pull
P / p
# 切换分支
进入 branch 面板
↑ ↓ 选分支
按:enter
# 新建分支
n
# 删除分支
d
# 查看 diff
选文件
按:enter
# stash
s

lazydocker
一个简单的终端用户界面,支持 docker 和 docker-compose。
- 用界面操作替代 docker 命令
- 可以查看 容器、镜像、日志、卷(volumes)
- 支持 启动 / 停止 / 删除容器
https://github.com/jesseduffield/lazydocker
安装
brew install lazydocker
集成(可选)
打开 ~/.zshrc,把下面这些别名追加到文件末尾:
alias lzd='lazydocker'
保存之后执行 source ~/.zshrc 生效。
用法
# 启动
lazydocker
lzd
# 切换面板
← →
# 选择容器 / 镜像
↑ ↓
# 启动 / 停止容器
s
# 重启容器
r
# 删除容器
d
# 查看日志
选中容器 → 进入 Logs 面板
# 删除镜像
d
# 搜索功能
/

zellij
Zellij 是一个面向开发者、运维人员以及所有热爱终端的用户的工作空间。类似的程序有时也被称为“终端复用器”。
- 可以在一个终端里 多窗口分屏
- 每个 pane 可以跑不同命令(像 tmux)
- 支持 保存会话、断线恢复、布局管理
- 更现代好上手的 tmux 替代品(终端分屏工具)
https://github.com/zellij-org/zellij
安装
brew install zellij
集成(可选)
打开 ~/.zshrc,把下面这些别名追加到文件末尾:
# 方式一:普通方式
eval "$(zellij setup --generate-auto-start zsh)"
# 方式二:如果你电脑安装其它例如 Ghostty,只想打开 Mac 终端启动 zellij,打开 Ghostty 不启动 zellij
if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]]; then
if [[ -z "$ZELLIJ" ]]; then
eval "$(zellij setup --generate-auto-start zsh)"
fi
fi
保存之后执行 source ~/.zshrc 生效。
配置
参考:https://zellij.dev/documentation/configuration.html
编辑文件 ~/.config/zellij
// 主题
theme "catppuccin-macchiato"
// 滚动缓冲区大小
scroll_buffer_size 10000
// 圆角
ui {
pane_frames {
rounded_corners true
}
}
用法
# 打开面板
Ctrl + p
# 底部栏会有各种命令提示
n:新建面板
r:向右分割
d:向下分割
x:关闭面板
Alt + f:悬浮面板
# session
zellij -s demo
# 重新打开
zellij attach demo
# 打开sesion面板
Ctro + O
w:进入session管理

cmux
一个基于 Ghostty 的 macOS 终端,带有垂直标签页和通知功能,适用于 AI 编码代理。
https://github.com/manaflow-ai/cmux
安装
brew install --cask cmux
使用
Command + D:左右分屏
Command + Shift + D:上下分屏
Command + W:关闭分屏
Command + N:新建工作区

通知
在终端使用 Claude 生成代码时,不想无聊等待而是切出去干别的,在生成完毕时并不会通知到你,那么 cmux 有一个通知功能,配合 Mac 的通知可以在屏幕上看到消息通知。
