我的 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_HOMEMAVEN_HOME

我会保留的几个 CLI 增强

如果只选一组工具,我会保留这些:

  • eza 替代 ls,目录优先、颜色更清楚。
  • bat 替代部分 cat 场景,适合看带高亮的文件。
  • fd 配合 fzf,快速搜文件和目录。
  • zoxide 做智能目录跳转。
  • starship 做 prompt,展示目录、git 分支、Node、Java 和命令耗时。
  • lazygit 处理大部分日常 git 操作。
  • zsh-autosuggestionszsh-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 的额外启动时间,都会慢慢变成烦躁。

我的推荐顺序

如果你也想搭一套类似环境,我建议按这个顺序来:

  1. 先装 Ghostty 和字体,把终端显示调舒服。
  2. 再装 Homebrew 和常用 CLI。
  3. 然后配置 zsh 的 PATH、nvm 懒加载、Java/Maven。
  4. 最后再加 starship、fzf、zoxide 和 zsh 插件。

每一步都单独验证,不要一次性塞一大段配置。

最终要验证的不是“配置文件看起来很完整”,而是这些动作是否真的顺手:ll 看目录、Ctrl+T 找文件、Alt+C 跳目录、z 快速进入常用项目、git 状态一眼能看见、SSH 到远程机器显示正常。

终端配置这件事,我越来越觉得像整理书桌。不是东西越多越专业,而是你每天伸手要用的东西,都在顺手的位置。