我的终端安装了哪些高效扩展?
摘要:你的终端是否看上去平平无奇,使用上也不那么顺手便捷呢,不妨试试下面的这些扩展让你的终端更好用。 eza: 终端文件图标、颜色、git 状态 yazi:终端文件管理器,预览、操作文件 btop:终端任务管理器,任务监控 duf:终端磁盘空间查
你的终端是否看上去平平无奇,使用上也不那么顺手便捷呢,不妨试试下面的这些扩展让你的终端更好用。
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:显示信息更清晰
https://github.com/muesli/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 替代品。
语法简单
搜索更灵活
速度很快
批量执行命令
结果更清晰
https://github.com/sharkdp/fd
安装
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 的通知可以在屏幕上看到消息通知。
