Windows与WSL的终端美化(五)——CLI工具链美化
前面几篇把窗口、分屏、提示符都搭好了,终端看起来已经像样了。可真正在里面待一天,你会发现体验的上限,往往不是 WezTerm,也不是 Starship,而是那些最普通、最常用的命令。ls、cat、git diff、cd、find、grep,它们每次只占几秒,可一天会重复很多遍,摩擦也就一点点累起来。
这一篇就是把这层摩擦拿掉。思路很简单,用一组现代 CLI 工具把传统命令换掉,再尽量统一到 Catppuccin Mocha。目录更好扫,文件更好读,diff 更好看,跳目录更省脑子,Git 和文件管理也终于不再像几套互不相干的工具。
先给整套工具链开个头
如果你已经在 WSL 里装了 Homebrew for Linux,最快的办法是一口气装齐。它的版本通常更新,省得每个工具单独找源。
# via Homebrew for Linux
brew install eza bat git-delta lazygit btop yazi fzf zoxide fd ripgrep fastfetch
如果你想先从 Ubuntu 自带仓库起步,也可以先把最基础的一组装上:
# via apt,部分工具版本会偏旧
sudo apt update
sudo apt install -y bat fd-find ripgrep fzf
Homebrew 方案最省事,apt 方案则更适合先把基础能力搭起来。后面像 delta、fastfetch、lazygit、yazi 这些工具,我还是更建议按各自更合适的方式装。
工具总览
| 工具 | 替代 | 说明 |
|---|---|---|
eza |
ls |
彩色目录列表,支持 icons 和 Git 状态 |
bat |
cat |
语法高亮,自动分页,Git 集成 |
delta |
diff |
美化 git diff 输出,支持 side-by-side |
lazygit |
git CLI |
全功能 Git TUI 客户端 |
btop |
top/htop |
现代系统资源监控 |
yazi |
ranger |
Rust 编写的终端文件管理器 |
fzf |
- | 通用模糊搜索工具 |
zoxide |
cd |
基于使用频率的智能目录跳转 |
fd |
find |
更快更友好的文件搜索 |
ripgrep |
grep |
极速文本搜索 |
fastfetch |
neofetch |
系统信息展示,更快,C 编写 |
这一组工具里,eza、bat、delta、fzf、btop 和 fastfetch 的提升最直观。zoxide、fd、ripgrep 则更像基础设施,单看没那么显眼,用久了反而最离不开。
eza,把目录列表先变顺眼
ls 最大的问题不是功能不够,而是信息太平。目录、文件、时间、权限、Git 状态全堆在一起,眼睛得自己做分层。eza 换上去之后,目录列表终于有了重点。
安装
如果你已经在 WSL 里用 Homebrew:
brew install eza
如果你的 Ubuntu 仓库里已经带 eza,也可以直接装:
sudo apt update
sudo apt install -y eza
alias 配置
把下面几行放进 ~/.zshrc:
alias ls='eza --icons --color=always --group-directories-first'
alias ll='eza -la --icons --color=always --git'
alias lt='eza --tree --icons --color=always --level=3'
alias la='eza -a --icons --color=always'
我自己最常用的是 ll 和 lt。前者适合看项目目录,后者适合快速扫三层以内的结构,不用来回 cd 和 ls。
bat,看文件这件事终于像“阅读”
原始 cat 很直接,但也真的很硬。配置文件、脚本、Markdown 一股脑吐出来,长一点就开始费眼。bat 把语法高亮、分页和 Git 集成带上之后,终端里读文件会舒服很多。
安装
sudo apt update
sudo apt install -y bat
Ubuntu 里的 batcat 符号链接问题
在 Debian 和 Ubuntu 系里,包名虽然叫 bat,命令却经常不是 bat,而是 batcat。如果你装完后发现 alias 不生效,十有八九就是这里卡住了。
先补一个本地软链接:
mkdir -p ~/.local/bin
ln -sf /usr/bin/batcat ~/.local/bin/bat
如果你的 shell 还没把 ~/.local/bin 放进 PATH,记得补上:
export PATH="$HOME/.local/bin:$PATH"
Catppuccin 主题安装
先给 cat 接管到 bat,再把主题装上:
# ~/.zshrc
alias cat='bat'
export BAT_THEME="Catppuccin Mocha"
然后下载主题文件并重建缓存:
mkdir -p "$(bat --config-dir)/themes"
curl -L https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Mocha.tmTheme \
-o "$(bat --config-dir)/themes/Catppuccin Mocha.tmTheme"
bat cache --build
如果你这一步还没建立 bat 软链接,就把上面命令里的 bat 暂时换成 batcat。
delta,把 diff 从“能看”变成“愿意看”
很多人不是不看 diff,只是不想看默认 diff。颜色生硬,层次不清,改动一多眼睛就开始发酸。delta 处理的就是这件事。side-by-side 加上行号之后,小改动和大改动都更容易扫。
安装
很多发行版里的包名不是 delta,而是 git-delta:
sudo apt update
sudo apt install -y git-delta
如果你用 Homebrew,对应命令是:
brew install git-delta
~/.gitconfig 完整配置
把下面整段加进 ~/.gitconfig:
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
side-by-side = true
line-numbers = true
syntax-theme = "Catppuccin Mocha"
[merge]
conflictstyle = diff3
配完以后,git diff、git show、git log -p 的观感都会直接变一个层级。
fzf,把筛选这件事交给眼睛
fzf 本身不是替代谁,它更像一层能力。补全、历史、文件选择、分支切换,只要有候选列表,它几乎都能接住。真正好用的地方,在于它能和别的工具自然串起来。
安装
sudo apt update
sudo apt install -y fzf
如果你用 Homebrew:
brew install fzf
Catppuccin Mocha 配色
把下面这段放进 ~/.zshrc:
export FZF_DEFAULT_OPTS=" \
--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
--color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8"
这组颜色不只好看,重点是和 WezTerm、Starship、bat、delta 放在一起不会跳戏。
zoxide,把 cd 变聪明
切目录这件事,最烦的不是慢,而是重复。常去的目录一长串,每次重新输入都像在做体力活。zoxide 会记住你的跳转历史和频率,最后让“我大概想去那个项目”这件事,变成很短的输入。
安装
官方给 Ubuntu 和 Debian 的推荐方式是直接跑安装脚本:
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
初始化和 alias 配置
如果你前一篇已经在 ~/.zshrc 里写过初始化,这里不用重复。如果没有,就把这两段一起加上:
eval "$(zoxide init zsh)"
alias cd='z'
eval 负责把补全和 shell 集成接好,alias cd='z' 则是最省力的入口。之后很多目录切换,基本敲两三个字符就够了。
fd 和 ripgrep,把找文件和找文本都换掉
这两个工具经常被放在配角位,但我很建议尽早装上。fd 用来找文件,语法比 find 友好很多。ripgrep 用来找文本,速度和默认行为都比 grep 更适合日常用。
安装
sudo apt update
sudo apt install -y fd-find ripgrep
Ubuntu 里的 fdfind 命名问题
和 batcat 类似,Ubuntu 里安装的是 fd-find 包,命令名通常叫 fdfind。如果你想统一成 fd,补一个软链接就行:
mkdir -p ~/.local/bin
ln -sf /usr/bin/fdfind ~/.local/bin/fd
常用 alias
alias find='fd'
alias grep='rg'
后面 yazi、fzf、各种 shell workflow 都很喜欢和 fd、ripgrep 配合。先装好,这条链子会顺很多。
fastfetch,把终端启动时的“第一眼”也整理一下
fastfetch 有点像启动画面,但它不是纯摆设。系统、终端、shell、硬件信息一眼能扫过去,而且它比 neofetch 更快,默认输出也更干净。
安装
Ubuntu 22.04 及更新版本可以直接用 PPA:
sudo add-apt-repository ppa:zhangsongcui3371/fastfetch
sudo apt update
sudo apt install -y fastfetch
配置
先生成默认配置:
fastfetch --gen-config
这一步会在 ~/.config/fastfetch/config.jsonc 生成默认配置文件。默认配置已经够用,如果你只是想把它作为 shell 启动时的开场,最简单的做法是把下面一行加进 ~/.zshrc:
fastfetch
我会把它放在 shell 初始化靠后的地方。这样每次打开终端时,第一眼既有点仪式感,也不会拖启动。
lazygit,把 Git 的上下文收在一个界面里
我不是想完全不用 Git 命令行,而是不想在 status、diff、log、add、branch 之间来回切。lazygit 的舒服之处,是把这些上下文都摆在一个地方,动作会自然很多。
方式一,用 apt 安装
如果你用的是比较新的 Debian 或 Ubuntu,可以直接装:
sudo apt update
sudo apt install -y lazygit
项目文档里给出的适用范围是:
- Debian 13 Trixie、Sid 以及之后的版本
- Ubuntu 25.10 以及之后的版本
方式二,手动下载官方 binary
如果你在 WSL 里常见的是 Ubuntu 24.04,这种方式更稳:
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | \grep -Po '"tag_name": *"v\K[^"]*')
LAZYGIT_ARCH=$(uname -m | sed -e 's/aarch64/arm64/')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/download/v${LAZYGIT_VERSION}/lazygit_${LAZYGIT_VERSION}_Linux_${LAZYGIT_ARCH}.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit -D -t /usr/local/bin/
验证安装
lazygit --version
lazygit 通常不需要额外主题配置,它会直接跟着你的终端配色走。Catppuccin Mocha 已经在终端层统一好后,进 lazygit 基本就是开箱即用。
btop,把系统监控也拉到同一套审美里
btop 给我的感觉很像“终于有人愿意认真排版系统监控界面了”。CPU、内存、磁盘、网络、进程都更容易扫一眼看懂,挂在分屏里长期开着也不难受。
安装
sudo apt update
sudo apt install -y btop
主题切换
btop 自带 Catppuccin 主题,切起来很直接:
启动 btop
按 Esc
进入 Options
找到 Theme
选择 catppuccin_mocha
如果你想让旧习惯继续生效,也可以顺手加上:
alias top='btop'
yazi,把文件管理这件事整个重做一遍
如果说前面那几个工具是在优化单点动作,yazi 更像是在重做一整段工作流。浏览目录、看预览、搜文件、跳目录、处理图片和压缩包,都可以尽量留在一个界面里完成。它和 fd、fzf、zoxide 接起来之后,终端里“找东西”这件事会顺得多。
安装 yazi
在 Ubuntu 24.04 LTS 里,项目文档推荐直接从官方 GitHub 下载最新 binary。先确保系统有 unzip:
sudo apt update
sudo apt install -y unzip
然后执行:
YAZI_VERSION=$(curl -s "https://api.github.com/repos/sxyazi/yazi/releases/latest" | grep -Po '"tag_name": *"v\K[^"]*')
curl -Lo yazi.zip "https://github.com/sxyazi/yazi/releases/download/v${YAZI_VERSION}/yazi-x86_64-unknown-linux-gnu.zip"
unzip yazi.zip
sudo mv yazi-x86_64-unknown-linux-gnu/yazi /usr/local/bin/
sudo mv yazi-x86_64-unknown-linux-gnu/ya /usr/local/bin/
rm -rf yazi.zip yazi-x86_64-unknown-linux-gnu
验证安装
yazi --version
yazi 的依赖说明
yazi 本体装好以后,预览能力还要靠周边工具补齐。好处是每一项都很明确,你按需安装就行。
字体和基础依赖
Nerd Fonts 如果你已经按前文在 WezTerm 里配好了,WSL 内通常不用重复安装。WezTerm 负责字体渲染,终端里的程序直接吃 Unicode 字符就够了。
如果你是在原生 Linux 桌面里用别的终端,而不是 WezTerm,可以单独装 Nerd Fonts:
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts
curl -fLo "JetBrainsMono Nerd Font.zip" \
https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip
unzip "JetBrainsMono Nerd Font.zip" -d JetBrainsMono
rm "JetBrainsMono Nerd Font.zip"
fc-cache -fv
fc-list | grep -i "JetBrains"
然后在终端模拟器里把字体切到 JetBrainsMono Nerd Font。
前面已经装过的基础依赖有这些:
# fd,文件搜索
# ripgrep,文本搜索
# fzf,模糊搜索
# zoxide,智能跳转
图片和视频预览
sudo apt install -y ffmpegthumbnailer imagemagick
ffmpegthumbnailer,生成视频缩略图imagemagick,负责图片格式转换和预览
PDF 预览
sudo apt install -y poppler-utils
poppler-utils提供pdftoppm,让yazi能把 PDF 转成图片来预览
压缩包和 JSON 预览
sudo apt install -y p7zip-full jq
p7zip-full,补上 7z、zip、rar 等格式的预览能力jq,让 JSON 文件预览更清楚
SVG 预览,可选
# resvg 需要单独下载 binary 或自己编译
# 如果你不怎么看 SVG,这一步可以先跳过
剪贴板支持,WSL 额外说明
# WSL 直接使用 clip.exe,无需额外安装
# 如果是原生 Linux:
# X11 -> sudo apt install xclip
# Wayland -> sudo apt install wl-clipboard
Catppuccin 主题配置
先把 Catppuccin flavor 拉下来:
mkdir -p ~/.config/yazi/flavors
git clone https://github.com/yazi-rs/flavors.git /tmp/yazi-flavors
cp -r /tmp/yazi-flavors/catppuccin-mocha.yazi ~/.config/yazi/flavors/
rm -rf /tmp/yazi-flavors
再创建 ~/.config/yazi/theme.toml:
[flavor]
use = "catppuccin-mocha"
快捷键速查表
| 快捷键 | 功能 |
|---|---|
j/k |
上下移动 |
h/l |
进入或退出目录 |
Space |
选中或取消选中 |
v |
可视模式,批量选择 |
y |
复制 |
x |
剪切 |
p |
粘贴 |
d |
删除 |
r |
重命名 |
/ |
搜索 |
z |
跳转,集成 zoxide |
f |
过滤,走 fzf |
q |
退出 |
依赖总览
| 工具 | 用途 | 安装状态 |
|---|---|---|
| Nerd Fonts | 图标显示 | WezTerm 已配置 |
fd |
文件搜索 | 已安装 |
ripgrep |
文本搜索 | 已安装 |
fzf |
模糊搜索 | 已安装 |
zoxide |
智能跳转 | 已安装 |
ffmpegthumbnailer |
视频缩略图 | 按需安装 |
imagemagick |
图片预览 | 按需安装 |
poppler-utils |
PDF 预览 | 按需安装 |
p7zip-full |
压缩包预览 | 按需安装 |
jq |
JSON 预览 | 按需安装 |
完整 alias 汇总
真正决定日常手感的,往往不是某一个工具装没装,而是入口有没有换干净。下面这段可以直接放进 ~/.zshrc:
# CLI aliases
alias ls='eza --icons --color=always --group-directories-first'
alias ll='eza -la --icons --color=always --git'
alias lt='eza --tree --icons --color=always --level=3'
alias la='eza -a --icons --color=always'
alias cat='bat'
alias diff='delta'
alias top='btop'
alias find='fd'
alias grep='rg'
alias cd='z'
如果你前面同时补过 PATH、BAT_THEME、FZF_DEFAULT_OPTS 和 zoxide init,我建议把关键段落也一起放在同一份 ~/.zshrc 里,最后统一 reload 一次:
source ~/.zshrc
收尾
这一轮换下来,最明显的变化不是某个命令突然强了十倍,而是你每天最常做的动作都没那么硌手了。看目录更快,看文件更舒服,diff 不再费眼,切目录不用硬记路径,Git 和文件管理也终于收成一套顺手的工作台。
下一篇就可以做最后一层收口,把这些工具、提示符、分屏和终端窗口统一到同一套 Catppuccin Mocha 配色里。
Comments (0)
No comments yet. Be the first!