如果你在 macOS 上从事开发工作,大概率是 iTerm2 的重度用户。但最近,由 HashiCorp 创始人 Mitchell Hashimoto 使用 Zig 语言开发的 Ghostty 在开发者圈子里爆火。我深度体验了一番,并把主力终端从 iTerm2 切换到了 Ghostty。

这篇文章总结了 Ghostty 的核心优势,以及如何从 iTerm2 完整迁移过来,包括解决多窗口命令广播等配置痛点。

为什么要尝试 Ghostty?它比 iTerm2 好在哪?

相比于 iTerm2 的”大而全”,Ghostty 走的是”极速、现代、纯文本配置”的极简路线:

  • 极致的渲染性能: 基于 GPU 硬件加速,输入延迟极低。在大量日志滚动或使用高负载命令行工具时,肉眼可见地比 iTerm2 丝滑。
  • Dotfiles 友好: 抛弃了 iTerm2 繁杂的 GUI 菜单,所有设置都浓缩在一个极简的纯文本配置文件中,非常适合用 Git 进行跨机器同步。
  • 开箱即用: 原生支持 TrueColor、连字(Ligatures)和优秀的字体渲染,不需要繁琐的调教就能获得极佳的视觉体验。
  • 完全兼容 Zsh: Ghostty 只是一个”显示器”,它会完美加载你现有的 Zsh、oh-my-zsh 插件以及 Starship/Powerlevel10k 等提示符主题,零迁移成本。

一、基础配置

Ghostty 的配置非常简单,配置文件默认路径为 ~/.config/ghostty/config

避坑指南: 如果你第一次配置,直接用 Vim 打开可能会遇到 E212: Can't open file for writing 错误。这是因为系统还没创建 ghostty 文件夹。你需要先在终端运行 mkdir -p ~/.config/ghostty 创建目录,然后再新建并编辑 config 文件。

1. 主题切换与热重载

Ghostty 内置了海量高质量主题。在终端运行 ghostty +list-themes 即可预览。在配置文件中写入:

1
theme = Catppuccin Macchiato

保存后,只需按下 Cmd + Shift + ,(macOS)即可热重载,主题瞬间切换,无需重启终端。

2. Ghostty 原生的多窗口与分屏

Ghostty 调用系统原生组件,分屏体验极佳且快捷键符合直觉:

  • 向下分屏:Cmd + D
  • 向右分屏:Cmd + Shift + D
  • 新建标签页:Cmd + T
  • 放大当前分屏:Cmd + Shift + Enter

二、进阶配置:完美复刻 iTerm2 的多窗口命令广播

如果你像我一样,习惯了 iTerm2 将命令同时广播到所有分屏的功能,这可能是 Ghostty 目前唯一缺失的拼图。对于习惯了 iTerm2 的老玩家来说,迁移到 Ghostty 最大的痛点就是:它目前不支持原生的”多窗口命令广播(Broadcast Input / Synchronize Panes)”功能。

如果你日常需要频繁通过 SSH 管理多台服务器,不能像 iTerm2 那样按下 Cmd + Shift + I 就一键向所有窗口发送相同命令,简直让人抓狂。

由于 Ghostty 官方的理念是将复杂的会话管理交给专业的终端复用器,因此最完美的解决方案就是:Ghostty + Tmux

下面将带你一步步配置,不仅要在 Ghostty 中实现多屏同步输入,还要利用”快捷键劫持”的魔法,完美复刻 iTerm2 的肌肉记忆!

1. 准备工作:安装 Tmux

由于 macOS 没有预装 tmux,我们需要先手动安装它:

1
brew install tmux

安装完成后,在终端输入 tmux 即可进入环境。

想深入了解 tmux? 如果你还不熟悉 tmux 的会话管理、窗格操作等核心概念,推荐先阅读 Mac 终端不够用?tmux 让你的终端战斗力翻倍,了解为什么 tmux 是终端效率利器。

请记住,我们接下来的所有”多窗口”操作,都是在 tmux 自己的分屏(Panes)里进行的,而不是 Ghostty 原生的新窗口或新标签页。

2. 核心魔法:让 Ghostty 充当”按键翻译官”

在纯粹的终端(如 tmux)世界里,它是不认识 macOS 专属的 Command (⌘) 键的。tmux 默认的分屏快捷键是繁琐的两步走:先按前缀键 Ctrl + b 松手,再按 %。这显然不够优雅。

破局思路: 我们利用 Ghostty 强大的快捷键绑定功能,拦截 Command 组合键,然后在后台向终端发送 tmux 认识的底层机器码!

在 tmux 中,默认的 Ctrl+b 对应的底层 Hex 码是 \x02。理解了这一点,我们就可以开始改造了。

3. 复刻 iTerm2:一键开启多窗口广播 (Cmd + Shift + I)

为了让逻辑更清晰,我们将 tmux 开启广播的快捷键改为大写字母 I

第一步:修改 Tmux 配置

打开 ~/.tmux.conf,写入以下代码:

1
2
# 绑定大写 I 来开启/关闭输入广播,并在状态栏显示提示
bind I set-window-option synchronize-panes \; display-message "广播模式: #{?pane_synchronized,已开启 [ON],已关闭 [OFF]}"

保存后,运行 tmux source-file ~/.tmux.conf 使其生效。

第二步:修改 Ghostty 配置

打开 Ghostty 的配置文件 ~/.config/ghostty/config,加入以下按键绑定:

1
2
# 当按下 Cmd+Shift+I 时,向终端发送 Ctrl+b (\x02) 和 I
keybind = cmd+shift+i=text:\x02I

重启 Ghostty,进入 tmux 并分出几个窗格,按下 Cmd + Shift + I,看到底部闪过的”广播模式: 已开启 [ON]”了吗?大功告成!

4. tmux 左右分屏 + 上下分屏

既然我们要依赖 tmux 来实现广播,那么所有的分屏动作也必须在 tmux 内部完成。

继续在 Ghostty 的配置文件 ~/.config/ghostty/config 中添加:

1
2
3
4
5
# tmux 左右分屏
keybind = cmd+shift+l=text:\x02%

# tmux 上下分屏
keybind = cmd+shift+u=text:\x02"

三、进阶玩法:打造专属的「全局下拉终端」

Ghostty 最让我惊艳的功能之一,是原生支持类似 Quake 的下拉式快捷终端(Quick Terminal)。无论你在哪个界面,按下快捷键就能从屏幕顶部唤出一个终端,用完即走,极其适合临时敲个命令。

在配置文件中加入这行代码,将唤醒快捷键设置为 `Ctrl + ``:

1
keybind = global:ctrl+`=toggle_quick_terminal

四、快捷键汇总

1. Ghostty 原生快捷键

窗口与分屏操作

功能 快捷键
向下分屏 Cmd + D
向右分屏 Cmd + Shift + D
新建标签页 Cmd + T
放大当前分屏 Cmd + Shift + Enter
切换分屏 Cmd + Option + ↑/↓/←/→

标签页切换

功能 快捷键
切换到上一个标签页 Cmd + Shift + [
切换到下一个标签页 Cmd + Shift + ]
向右切换(通用) Ctrl + Tab
向左切换(通用) Ctrl + Shift + Tab
跳转到第 N 个标签 Cmd + 1 ~ Cmd + 9

其他操作

功能 快捷键
热重载配置 Cmd + Shift + ,
查看主题列表 终端运行 ghostty +list-themes

2. tmux 快捷键(通过 Ghostty 映射)

以下快捷键需要先在 Ghostty 配置文件中添加映射:

功能 快捷键 配置项
开启/关闭广播模式 Cmd + Shift + I keybind = cmd+shift+i=text:\x02I
左右分屏 Cmd + Shift + L keybind = cmd+shift+l=text:\x02%
上下分屏 Cmd + Shift + U keybind = cmd+shift+u=text:\x02"

3. tmux 原生操作(前缀键 Ctrl + B

功能 操作步骤
切换分屏 Ctrl + B 松手,然后按 ↑/↓/←/→
左右分屏 Ctrl + B 松手,然后按 %
上下分屏 Ctrl + B 松手,然后按 "

总结

通过上述配置,我们成功将 Ghostty 极速的原生体验与 tmux 强大的会话管理结合在了一起,并用”按键劫持”的方式保留了 iTerm2 的肌肉记忆。

如果你重度依赖 iTerm2 的深度定制化和 GUI 功能,留在 iTerm2 依然是好选择。但如果你追求极致的响应速度、喜欢纯文本配置的优雅,并且希望多平台体验一致,Ghostty 绝对值得你花十分钟配置并作为主力尝试。