mini折腾记(六):打造效率爆表的终端环境
mini折腾记(六):打造效率爆表的终端环境
Prorisemini折腾记(六):打造效率爆表的终端环境
上一篇文章里,我用Docker容器化了所有数据库,数据统一存储在外置硬盘,管理起来非常方便。
现在开发环境基本搭建完成了,但还有一个地方需要优化:终端。
Windows上的终端体验
在Windows上,我用的是PowerShell和Windows Terminal。
说实话,Windows Terminal已经很不错了,支持多标签、分屏、自定义主题。但它有几个问题:
- 命令提示符很朴素:只显示当前路径,看不出当前在哪个Git分支
- 历史命令搜索不方便:按上箭头翻历史命令,很慢
- 没有AI辅助:忘记命令怎么写,只能去Google
- 输出不好看:所有输出都是纯文本,没有语法高亮
换到Mac后,我发现Mac的默认终端更简陋。虽然可以用iTerm2,但我想找一个更现代化的方案。
发现Warp
我在网上搜索"Mac最好用的终端",看到很多人推荐Warp。
Warp是一个新一代的终端,它的特点是:
- 现代化的UI设计
- 内置AI辅助
- 命令和输出以"块"的形式呈现
- 支持命令自动补全
我下载试用了一下,立刻被它的体验吸引了。
Warp的核心功能
1. 块编辑模式
在传统终端里,命令和输出混在一起,很难区分。
在Warp里,每个命令和它的输出是一个独立的"块"。你可以:
- 单独复制某个命令
- 单独复制某个输出
- 折叠某个输出(如果输出很长)
- 给某个块添加书签
这个功能看起来简单,但用起来非常方便。
2. AI命令搜索
这是Warp的杀手级功能。
按Ctrl + ~(波浪号键),会弹出一个AI对话框。你可以用自然语言问问题,Warp会生成对应的命令。
比如:
- 问:“怎么查看当前目录下最大的5个文件?”
- Warp回答:
du -sh * | sort -rh | head -5
比Google快多了。
3. 命令自动补全
Warp会根据你的历史命令和当前上下文,自动补全命令。
比如你输入docker,它会提示你最常用的docker ps、docker images等命令。
按Tab键接受补全,按Cmd + →直接跳到补全的末尾。
4. 历史命令搜索
按Ctrl + R,可以模糊搜索历史命令。
这个功能其实很多终端都有(通过fzf实现),但Warp是原生支持的,不需要额外配置。
5. 快捷键手册
按Cmd + /,可以查看所有快捷键。
这对新手非常友好,不需要去网上查文档。
Warp的设置
Warp的设置很简单,按Cmd + ,打开设置页面。
我主要调整了这几个地方:
1. 主题
Warp自带了很多主题,我选择了"One Dark"(和VS Code的主题一致)。
2. 字体
我把字体改成了"JetBrains Mono"(一个专为编程设计的等宽字体,支持连字)。
3. 启动时的工作目录
我把启动时的工作目录改成了/Volumes/DataDisk/Projects,这样每次打开终端就直接在项目目录下。
4. AI功能
Warp的AI功能是免费的,但有使用次数限制(每天50次)。对于日常使用来说,完全够用。
如果你不想用AI功能,可以在设置里关闭。
美化命令提示符:Starship
Warp的默认提示符已经比Mac的默认终端好看多了,但我还想更进一步。
我想要一个提示符,能显示:
- 当前路径
- 当前Git分支
- Git状态(有没有未提交的修改)
- 当前使用的编程语言版本(Node、Python、Java等)
我找到了Starship。
Starship是什么?
Starship是一个跨平台的命令行提示符工具,用Rust写的,速度很快。
它的特点是:
- 开箱即用,几乎不需要配置
- 自动检测当前目录的环境(Git仓库、Node项目、Python项目等)
- 显示相关信息(Git分支、Node版本、Python版本等)
- 支持自定义配置
安装Starship
安装很简单:
1 | brew install starship |
然后在~/.zshrc末尾添加一行:
1 | eval "$(starship init zsh)" |
重新加载配置:
1 | source ~/.zshrc |
就这么简单,不需要任何配置。
Starship的效果
安装完Starship后,我的提示符变成了这样:
1 | ~/Projects/my-project on main [!?] via ⬢ v22.22.0 |
这一行包含了很多信息:
~/Projects/my-project:当前路径on main:当前Git分支是main[!?]:Git状态(!表示有修改,?表示有未跟踪的文件)via ⬢ v22.22.0:当前使用的Node版本是22.22.0
所有这些信息都是自动检测的,不需要手动配置。
如果我进入一个Python项目,提示符会自动显示Python版本:
1 | ~/Projects/python-project on main via 🐍 v3.13.11 |
如果我进入一个非Git目录,Git相关的信息就不会显示:
1 | ~/Downloads |
Starship会根据当前目录的环境,智能地显示相关信息。
Starship的配置(可选)
Starship的默认配置已经很好用了,但如果你想自定义,可以创建一个配置文件。
配置文件的路径是~/.config/starship.toml。
我没有做太多自定义,只是调整了一下颜色和图标。如果你想深度定制,可以参考Starship的官方文档。
命令行效率工具
终端美化好了,接下来要装一些效率工具,让日常操作更快。
1. bat - 带语法高亮的cat
在Windows上,我用type或cat查看文件内容,但输出都是黑白的。
在Mac上,我装了bat,它是cat的现代化替代品。
bat的特点:
- 自动语法高亮(支持几百种编程语言)
- 显示行号
- 显示Git修改(如果文件在Git仓库里)
- 支持分页(文件很长时自动分页)
使用示例:
1 | # 查看一个JavaScript文件 |
输出会自动高亮,JSON的键是蓝色,值是绿色,非常清晰。
创建别名:
我在~/.zshrc里创建了一个别名,让cat命令自动调用bat:
1 | alias cat="bat" |
这样以后输入cat,实际上执行的是bat。
2. eza - 更美观的ls
ls是最常用的命令之一,但Mac的默认ls输出很朴素。
eza是ls的现代化替代品,用Rust写的。
eza的特点:
- 彩色输出(文件夹是蓝色,可执行文件是绿色)
- 显示文件图标(需要Nerd Font字体)
- 显示Git状态
- 支持树状显示
使用示例:
1 | # 普通列表 |
创建别名:
1 | alias ls="eza" |
现在输入ls,输出会自动彩色显示,一眼就能看出哪个是文件夹、哪个是文件。
3. fd - 更快的find
find命令很强大,但语法复杂,而且速度慢。
fd是find的现代化替代品,用Rust写的。
fd的特点:
- 语法简单(不需要记复杂的参数)
- 速度快(比find快很多)
- 自动忽略
.git、node_modules等目录 - 支持正则表达式
使用示例:
1 | # 搜索文件名包含"config"的文件 |
比find简单多了。
4. ripgrep (rg) - 更快的grep
grep用来搜索文件内容,但速度慢,而且不会自动忽略不需要搜索的目录。
ripgrep(简称rg)是grep的现代化替代品,用Rust写的。
ripgrep的特点:
- 速度极快(比grep快几十倍)
- 自动递归搜索
- 自动忽略
.git、node_modules等目录 - 支持正则表达式
- 彩色输出
使用示例:
1 | # 在当前目录及子目录搜索包含"TODO"的文件 |
我现在搜索代码,都用rg,比grep快太多了。
5. zoxide - 智能cd
cd是最常用的命令,但每次都要输入完整路径很麻烦。
zoxide是cd的智能替代品,用Rust写的。
zoxide的特点:
- 记住你常去的目录
- 可以用模糊匹配跳转
- 不需要输入完整路径
使用示例:
假设我经常去/Volumes/DataDisk/Projects/my-project这个目录。
用传统的cd:
1 | cd /Volumes/DataDisk/Projects/my-project |
用zoxide:
1 | z my-proj |
只需要输入目录名的一部分,zoxide会自动跳转到最匹配的目录。
注意: zoxide需要时间学习你的习惯。刚装的时候,它不知道你常去哪些目录,需要你先用cd去几次,它才能记住。
用了一段时间后,zoxide会越来越智能。
6. tldr - 简化版man手册
man命令可以查看命令的帮助文档,但信息太多,很难找到想要的内容。
tldr(Too Long; Didn’t Read)是简化版的man手册,只显示最常用的例子。
使用示例:
1 | # 查看tar命令的用法 |
输出:
1 | tar |
只显示最常用的几个例子,一看就懂。
比man tar(输出几百行)实用多了。
7. btop - 系统监控工具
btop是一个系统监控工具,类似Windows的任务管理器。
btop的特点:
- 显示CPU、内存、磁盘、网络使用情况
- 显示所有进程
- 可以杀进程
- 界面美观
使用:
1 | btop |
会打开一个全屏界面,显示系统资源使用情况。
按q退出。
我一般不常用,但偶尔需要查看系统资源时,btop比Mac的"活动监视器"方便。
Git工具优化
作为开发者,Git是每天都要用的工具。我配置了几个工具,让Git使用体验更好。
1. lazygit - Git的TUI界面
lazygit是一个Git的终端UI工具,可以用键盘操作Git,不需要记命令。
lazygit的特点:
- 可视化显示Git状态
- 用键盘操作(不需要鼠标)
- 支持所有Git操作(add、commit、push、pull、merge等)
- 显示Git历史
使用:
1 | cd /Volumes/DataDisk/Projects/my-project |
会打开一个全屏界面,显示当前仓库的状态。
常用操作:
空格:stage/unstage文件c:commitp:pushP:pullq:退出
我现在做简单的Git操作(add、commit、push),都用lazygit,比命令行快。
2. delta - Git diff美化
Git的默认diff输出是纯文本,很难看清楚改了什么。
delta是一个Git diff美化工具,可以让diff输出更清晰。
delta的特点:
- 语法高亮
- 并排显示(side-by-side)
- 显示行号
- 显示Git blame信息
配置:
在~/.gitconfig里添加:
1 | [core] |
配置完成后,运行git diff,输出会自动美化。
3. GitHub CLI (gh)
gh是GitHub官方的命令行工具,可以在终端里操作GitHub。
gh的常用功能:
- 创建仓库
- 创建PR
- 查看issue
- 克隆仓库
使用示例:
1 | # 克隆仓库(不需要输入完整URL) |
我现在克隆GitHub仓库,都用gh repo clone,比复制URL快。
创建实用的别名
配置好所有工具后,我在~/.zshrc里创建了一些常用的别名,让日常操作更快。
1 | # ============================================ |
现在我想查看Git状态,只需要输入gs,比git status快多了。
实际使用体验
配置完这些工具后,我的终端使用体验提升了一个档次。
场景1:查看代码
以前:
1 | cat src/index.js |
输出是黑白的,看不清结构。
现在:
1 | cat src/index.js |
输出自动语法高亮,关键字是蓝色,字符串是绿色,注释是灰色,一眼就能看清代码结构。
场景2:搜索文件
以前:
1 | find . -name "*config*" |
输出包含node_modules里的文件,很乱。
现在:
1 | fd config |
自动忽略node_modules,只显示我关心的文件。
场景3:搜索代码
以前:
1 | grep -r "TODO" . |
速度慢,而且输出包含node_modules里的文件。
现在:
1 | rg "TODO" |
速度快,自动忽略node_modules,输出还有颜色。
场景4:Git操作
以前:
1 | git status |
需要输入4个命令。
现在:
1 | lazygit |
打开lazygit,按几个键就完成了。
场景5:跳转目录
以前:
1 | cd /Volumes/DataDisk/Projects/my-project |
需要输入完整路径。
现在:
1 | z my-proj |
只需要输入目录名的一部分。
小结
从Windows转到Mac,终端是一个很大的变化。
Windows上的PowerShell和Windows Terminal已经很不错了,但Mac上有更好的选择。
通过配置Warp、Starship和一系列命令行工具,我的终端使用体验比Windows上好太多了。
现在我的终端有:
- 现代化的UI(Warp)
- 美观的提示符(Starship)
- 高效的文件操作(bat、eza、fd、ripgrep)
- 智能的目录跳转(zoxide)
- 便捷的Git操作(lazygit、delta、gh)
这些工具都是开源免费的,而且跨平台(Windows、Mac、Linux都能用)。
如果以后我要在Linux服务器上工作,也可以用同样的配置。
现在,我的Mac mini已经完全配置好了:
- 硬件选购和系统设置(第一、二章)
- 窗口管理和快捷键(第三章)
- 开发语言版本管理(第四章)
- 数据库容器化(第五章)
- 终端工具优化(第六章)
这才是我想要的开发环境。
下一篇文章,我会讲如何配置IDE(VS Code、Cursor、IntelliJ IDEA),以及一些开发中的实用技巧。



