← Windows与WSL的终端美化

Windows与WSL的终端美化(五)——CLI工具链美化

前面几篇把窗口、分屏、提示符都搭好了,终端看起来已经像样了。可真正在里面待一天,你会发现体验的上限,往往不是 WezTerm,也不是 Starship,而是那些最普通、最常用的命令。lscatgit diffcdfindgrep,它们每次只占几秒,可一天会重复很多遍,摩擦也就一点点累起来。

这一篇就是把这层摩擦拿掉。思路很简单,用一组现代 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 方案则更适合先把基础能力搭起来。后面像 deltafastfetchlazygityazi 这些工具,我还是更建议按各自更合适的方式装。

工具总览

工具 替代 说明
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 编写

这一组工具里,ezabatdeltafzfbtopfastfetch 的提升最直观。zoxidefdripgrep 则更像基础设施,单看没那么显眼,用久了反而最离不开。

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'

我自己最常用的是 lllt。前者适合看项目目录,后者适合快速扫三层以内的结构,不用来回 cdls

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 diffgit showgit 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'

后面 yazifzf、各种 shell workflow 都很喜欢和 fdripgrep 配合。先装好,这条链子会顺很多。

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 命令行,而是不想在 statusdifflogaddbranch 之间来回切。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 更像是在重做一整段工作流。浏览目录、看预览、搜文件、跳目录、处理图片和压缩包,都可以尽量留在一个界面里完成。它和 fdfzfzoxide 接起来之后,终端里“找东西”这件事会顺得多。

安装 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'

如果你前面同时补过 PATHBAT_THEMEFZF_DEFAULT_OPTSzoxide init,我建议把关键段落也一起放在同一份 ~/.zshrc 里,最后统一 reload 一次:

source ~/.zshrc

收尾

这一轮换下来,最明显的变化不是某个命令突然强了十倍,而是你每天最常做的动作都没那么硌手了。看目录更快,看文件更舒服,diff 不再费眼,切目录不用硬记路径,Git 和文件管理也终于收成一套顺手的工作台。

下一篇就可以做最后一层收口,把这些工具、提示符、分屏和终端窗口统一到同一套 Catppuccin Mocha 配色里。

系列文章导航

  1. Windows与WSL的终端美化(零)——系列概览
  2. Windows与WSL的终端美化(一)——WSL安装与配置
  3. Windows与WSL的终端美化(二)——WezTerm配置
  4. Windows与WSL的终端美化(三)——Zellij工作区管理
  5. Windows与WSL的终端美化(四)——Shell与Prompt配置
  6. Windows与WSL的终端美化(五)——CLI工具链美化(本篇)
  7. Windows与WSL的终端美化(六)——Catppuccin主题统一
目录

Comments (0)

No comments yet. Be the first!