我的 Mac 终端配置思路:轻量、好看、可迁移
这篇不是“照抄我的 .zshrc”,而是我给自己整理的一套 Mac 终端配置思路。
我更希望它能解决一个问题:换新电脑时,怎么快速复刻一个熟悉、好用、但不脆弱的终端环境。
我的目标很简单:终端看起来舒服,常用命令顺手,启动速度不要慢,配置能迁移,但不要把旧机器上的绝对路径和历史包袱一起搬过去。
先确定终端体验
我现在偏向用 Ghostty。
它的优势是配置简单、速度快、字体和透明度效果都不错,也支持快速终端、分屏、tab、shell integration 等能力。
我会先准备这些基础项:
- 字体用支持中文和图标的 Nerd Font,比如 Maple Mono NF CN。
- 主题用 Catppuccin Mocha。
- 窗口保留一点透明和模糊,但不要影响阅读。
- 常用快捷键固定下来,比如新建 tab、左右切 tab、横竖分屏、重载配置。
这类配置适合直接写进:
~/.config/ghostty/config
但字体和应用路径要按新机器实际情况检查,不要机械照搬。
zsh 要轻,不要堆
我对 shell 配置的偏好是:启动要快,能力按需加载。
比如 Node 环境可以用 nvm,但 nvm 完整加载会拖慢 shell 启动。所以更好的做法是:如果某个 Node 版本已经存在,就先把它的 bin 放进 PATH,真正需要切版本时再懒加载 nvm。
Java、Maven 也是类似思路。不要直接复制旧机器的路径,而是先探测:
/usr/libexec/java_home -V
command -v mvn
mvn -v
能用 Homebrew 管理的,就优先让 Homebrew 管;确实是手动安装的,再单独设置 JAVA_HOME 或 MAVEN_HOME。
我会保留的几个 CLI 增强
如果只选一组工具,我会保留这些:
eza替代ls,目录优先、颜色更清楚。bat替代部分cat场景,适合看带高亮的文件。fd配合fzf,快速搜文件和目录。zoxide做智能目录跳转。starship做 prompt,展示目录、git 分支、Node、Java 和命令耗时。lazygit处理大部分日常 git 操作。zsh-autosuggestions和zsh-syntax-highlighting提升输入体验。
安装可以先从这一行开始:
brew install eza bat fd fzf zoxide starship lazygit zsh-autosuggestions zsh-syntax-highlighting
这些工具的共同点是:单个都不复杂,但组合起来会明显提升终端的日常手感。
配置迁移时,最容易踩的坑
第一,不要整文件覆盖 .zshrc。旧机器的 .zshrc 里经常混着旧路径、临时 alias、已经不用的工具和某些只在当前机器存在的目录。
第二,所有本机路径都要先探测。比如 Homebrew 在 Apple Silicon 上通常是 /opt/homebrew,Intel Mac 可能是 /usr/local。
第三,远程 SSH 要考虑 terminfo。Ghostty 默认可能使用 xterm-ghostty,老服务器不一定认识。我的做法是 SSH 时 fallback 到 xterm-256color,这样远程显示更稳。
第四,prompt 不要太重。终端每天要打开很多次,任何 200ms 的额外启动时间,都会慢慢变成烦躁。
我的推荐顺序
如果你也想搭一套类似环境,我建议按这个顺序来:
- 先装 Ghostty 和字体,把终端显示调舒服。
- 再装 Homebrew 和常用 CLI。
- 然后配置 zsh 的 PATH、nvm 懒加载、Java/Maven。
- 最后再加 starship、fzf、zoxide 和 zsh 插件。
每一步都单独验证,不要一次性塞一大段配置。
最终要验证的不是“配置文件看起来很完整”,而是这些动作是否真的顺手:ll 看目录、Ctrl+T 找文件、Alt+C 跳目录、z 快速进入常用项目、git 状态一眼能看见、SSH 到远程机器显示正常。
终端配置这件事,我越来越觉得像整理书桌。不是东西越多越专业,而是你每天伸手要用的东西,都在顺手的位置。