如果你在 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 | # 绑定大写 I 来开启/关闭输入广播,并在状态栏显示提示 |
保存后,运行 tmux source-file ~/.tmux.conf 使其生效。
第二步:修改 Ghostty 配置
打开 Ghostty 的配置文件 ~/.config/ghostty/config,加入以下按键绑定:
1 | # 当按下 Cmd+Shift+I 时,向终端发送 Ctrl+b (\x02) 和 I |
重启 Ghostty,进入 tmux 并分出几个窗格,按下 Cmd + Shift + I,看到底部闪过的”广播模式: 已开启 [ON]”了吗?大功告成!
4. tmux 左右分屏 + 上下分屏
既然我们要依赖 tmux 来实现广播,那么所有的分屏动作也必须在 tmux 内部完成。
继续在 Ghostty 的配置文件 ~/.config/ghostty/config 中添加:
1 | # tmux 左右分屏 |
三、进阶玩法:打造专属的「全局下拉终端」
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 绝对值得你花十分钟配置并作为主力尝试。