终端也可以很好用:Starship + zoxide + fzf,把命令行折腾顺手
我以前一直觉得终端这种东西,黑底白字能敲命令就行。
直到项目多起来以后,事情开始变得有点烦:现在在哪个目录?这是哪个 Git 分支?Go、Python、Node 到底切到什么版本了?刚才那个藏在六层目录里的项目又放哪儿了?
这些问题一个都不难,但每天回答几十次,还是挺烦。
后来我的做法逐渐稳定成三个小工具:
- Starship:把当前目录、Git 分支、语言环境这些信息放到提示符里;
- zoxide:记住常去的目录,以后不再手敲一长串
cd; - fzf:给命令行加一个很好用的模糊搜索框。
它们都很轻,配置量也不大。十几分钟装完,之后每天都能用到。
如果你的 Windows / WSL 环境还没配好,可以先看站内这篇:Windows 11 + WSL2 开发环境搭建全教程。如果经常重装电脑,用 winget 恢复开发环境 也可以一起配。
先说效果:Starship 负责让你一眼看懂自己在哪
Starship 是一个跨 Shell 的提示符工具。PowerShell、Bash、Zsh、Fish、Nushell 都能用。
它最方便的地方不是“好看”,而是会根据当前目录自动显示有用的信息。进入 Go 项目就显示 Go,进入 Git 仓库就显示分支,命令跑得比较久还能顺手告诉你耗时。

图:Starship 官方 Tokyo Night 预设。来源:Starship 官方文档。
Windows 安装
Windows 直接用 winget:
winget install --id Starship.Starship
然后打开 PowerShell:
notepad $PROFILE
如果提示文件不存在,先创建:
New-Item -ItemType File -Path $PROFILE -Force
在文件末尾加入:
Invoke-Expression (&starship init powershell)
保存后重新打开 PowerShell。
WSL / Linux
Starship 官方安装脚本:
curl -sS https://starship.rs/install.sh | sh
Bash 用户把下面这行加到 ~/.bashrc:
eval "$(starship init bash)"
然后:
source ~/.bashrc
Ubuntu 25.04 及更新版本也可以直接:
sudo apt install starship
Starship 官方当前也提供 winget、Chocolatey、Scoop、Homebrew 等安装方式,没必要为了装一个提示符再折腾半天。
官方文档:https://starship.rs/guide/
不想装 Nerd Font?完全可以
网上很多终端截图满屏特殊图标,第一反应通常是:又要装字体。
确实,Tokyo Night、Pastel Powerline 这类预设需要 Nerd Font。不过 Starship 自己就提供了不依赖 Nerd Font 的预设。
比如:
mkdir -p ~/.config
starship preset plain-text-symbols -o ~/.config/starship.toml
PowerShell 里同样可以执行:
New-Item -ItemType Directory -Path "$HOME/.config" -Force | Out-Null
starship preset plain-text-symbols -o "$HOME/.config/starship.toml"
效果很朴素,但信息够用:

图:Starship 官方 Plain Text Symbols 预设。它专门给没有 Nerd Font / Unicode 条件的环境准备。
如果你愿意装 Nerd Font,再试:
starship preset tokyo-night -o ~/.config/starship.toml
或者:
starship preset pastel-powerline -o ~/.config/starship.toml
我自己的建议是先用默认配置两天。等你真的觉得某块信息多余,再删;真的觉得缺什么,再加。
终端配置最容易犯的毛病,就是第一天兴冲冲复制一份 400 行 TOML,第二周自己都不知道哪一行在控制什么。
zoxide:终于不用记项目到底藏在哪一层目录
这个工具我很喜欢。
zoxide 可以理解成一个会记路的 cd。你去过哪些目录、哪些目录经常用,它会慢慢记住。
假设我的项目在:
/opt/Projects/Yunshu_Studio/YSAIC
传统写法:
cd /opt/Projects/Yunshu_Studio/YSAIC
用了几次 zoxide 以后:
z ysaic
就到了。
甚至同时有好几个名字相似的项目,也可以:
z yunshu ysaic
它会按照目录匹配程度和使用频率找最合适的那个。
图:zoxide 项目示例图。来源:zoxide GitHub 仓库。
Windows
官方目前推荐 winget:
winget install ajeetdsouza.zoxide
然后把下面这行放进 $PROFILE:
Invoke-Expression (& { (zoxide init powershell | Out-String) })
Bash / WSL
官方推荐安装脚本:
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
然后在 ~/.bashrc 末尾加:
eval "$(zoxide init bash)"
重新加载:
source ~/.bashrc
如果你在中国大陆网络环境里访问 GitHub Raw 不稳定,我更建议临时处理好 GitHub 网络,或者在已经安装 Rust 的机器上使用:
cargo install zoxide --locked
不太建议从随便搜出来的第三方网盘下载二进制文件。一个为了省两分钟装的终端工具,没必要顺便给自己增加供应链风险。
zoxide 官方文档:https://github.com/ajeetdsouza/zoxide
fzf:给终端塞一个模糊搜索框
fzf 做的事情特别简单:给它一堆文本,它让你边打字边筛选,最后把选中的那一行返回来。
例如:
git branch | fzf
项目文件太多:
find . -type f | fzf
想从历史命令里挑一条:
history | fzf
它真正好用的地方在于能和其他命令随便拼。
Windows
winget install fzf
装完直接试:
Get-ChildItem | fzf
Ubuntu / Debian
sudo apt install fzf
新版 fzf 的 Bash Shell 集成可以直接这样开:
eval "$(fzf --bash)"
放进 ~/.bashrc 后,会获得模糊补全和快捷键支持。
不过这里有个版本坑:zoxide 当前要求 fzf 至少为 0.51.0。某些较老的 Ubuntu 仓库可能给你一个更旧版本,所以装完最好看一眼:
fzf --version
版本太旧,就按 fzf 官方 README 使用官方发布包、Homebrew、mise 或 Git 安装方式更新。
fzf 官方文档:https://github.com/junegunn/fzf
zoxide + fzf 放一起才开始有意思
装好 fzf 以后,zoxide 的:
zi
会弹出交互式目录选择。
你不需要准确记得项目目录叫什么,只要打几个模糊字符,然后上下选一下就行。
我自己最常见的一套动作大概是:
z ysaic
git status
gi=$(git branch --format='%(refname:short)' | fzf)
git switch "$gi"
PowerShell 也可以写得差不多:
$branch = git branch --format='%(refname:short)' | fzf
git switch $branch
这类小组合用久了之后,长路径和一堆候选项会越来越少出现在脑子里。
机器记路径,人记事情。
我会怎么配:够用就收手
如果只想要一个轻量配置,我会这样:
add_newline = false
[directory]
truncation_length = 3
truncate_to_repo = true
[git_branch]
symbol = "git:"
[cmd_duration]
min_time = 1000
format = "took [$duration]($style) "
[character]
success_symbol = "[>](bold green)"
error_symbol = "[>](bold red)"
文件放到:
~/.config/starship.toml
它不炫,但已经能解决大部分问题:目录别太长、Git 分支看得到、慢命令显示耗时、失败命令颜色不一样。
剩下的以后碰到需求再加。
顺便说几个我踩过的小坑
1. PowerShell Profile 不是默认一定存在
所以第一次执行:
notepad $PROFILE
报不存在很正常,创建就行。
2. Windows 和 WSL 是两套 Shell 环境
Windows PowerShell 的配置不会自动跑进 WSL,WSL 的 .bashrc 也不会反过来影响 PowerShell。
你可以让两边共用类似的 Starship 配置,但初始化脚本还是分别写。
3. 不要为了截图效果把启动速度搞烂
每开一个终端就跑五六个外部程序、抓 Git 状态、查网络、画系统 Logo,很快就会从“真漂亮”变成“怎么又卡了一下”。
提示符每次执行命令都会回来一次,几十毫秒的东西堆多了真能感觉出来。
4. 字体乱码时先别怀疑 Starship
Powerline 符号变方块,十有八九是 Nerd Font 没装、装了没选,或者当前终端 Profile 没用那个字体。
嫌麻烦就用 plain-text-symbols,完全没什么损失。
最后
我挺喜欢这类小工具,因为它们没有试图重新发明终端。
cd 还是 cd,Git 还是 Git,PowerShell 和 Bash 也没换。只是那些每天会重复几十遍、又没什么技术含量的小动作被削掉了一点。
终端折腾到最后,我觉得最好用的状态大概就是:打开它以后不会先注意到“我配置得真漂亮”,而是很自然地开始干活。
如果你平时主要在 Windows 上开发,站内这几篇也可以接着看:
参考资料
- Starship Guide:https://starship.rs/guide/
- Starship Presets:https://starship.rs/zh-cn/presets/
- zoxide:https://github.com/ajeetdsouza/zoxide
- fzf:https://github.com/junegunn/fzf
终端也可以很好用:Starship + zoxide + fzf,把命令行折腾顺手
https://wangling.hauchet.cn/archives/starship-zoxide-fzf-terminal-setup
评论