从 Warp 切换到了 [[Ghostty]],理由非常简单,我使用 atuin 来同步 Shell 历史,但是 Warp 不支持,外加上 Ghostty 自带 Metal GPU 加速渲染、原生 macOS AppKit 构建、启动飞快,可以让 AI 以纯文本方式配置,就果断切换了。

让 Claude Code 给了一些初始化设置之后一直用到现在,积累了一些配置心得,整理成文。

Ghostty 是什么

Ghostty 是 HashiCorp 联合创始人 Mitchell Hashimoto 开发的开源终端模拟器。用 Zig 语言编写,macOS 上走 Metal 渲染,Linux 上走 GTK4。它的设计哲学是”零配置即可用”——默认内置 JetBrains Mono 字体和 Nerd Font 支持,开箱就能正常显示各种图标。

和 iTerm2 比,Ghostty 更轻更快;和 Warp 比,Ghostty 不会和 tmux 冲突;和 Alacritty 比,Ghostty 有原生的标签页和分屏支持。

配置文件位于 ~/.config/ghostty/config,纯键值对格式,没有复杂语法。可以使用软链接的方式放到 dotfiles 中保存。

主题配色

Ghostty 内置了 300+ 主题,可以用命令查看:

ghostty +list-themes

几个最流行的暗色主题:

主题 背景色 风格
Catppuccin Mocha #1e1e2e 柔和温暖,社区生态最完整
Gruvbox Dark Hard #1d2021 复古暖色调,接近纯黑
Tokyo Night Night #1a1b26 冷色调蓝紫系,Neovim 社区标配
Dracula+ #212121 经典高对比,色彩鲜艳
Kanagawa Wave #1f1f28 日式水墨画美学

直接在 config 里引用内置主题名即可,支持 dark/light 自动切换:

theme = dark:Gruvbox Dark Hard,light:Gruvbox Light Hard

用内置主题的好处是 Cmd+Shift+, 热重载一定能生效。如果用自定义主题文件,改完可能需要完全重启 Ghostty。

关于 minimum-contrast

如果你在终端里跑 TUI 应用(比如 [[Claude Code]]),可能会遇到某些文字颜色和背景色对比度不足、看不清的问题。Ghostty 提供了一个 minimum-contrast 配置项,会自动调整前景色以确保最低对比度:

minimum-contrast = 1.3

值越大强制对比度越高,但也可能让部分颜色偏离主题原色。1.3 是一个比较平衡的值。

推荐配置

以下是我实际在用的配置,逐项解释。

字体

font-family       = MesloLGS Nerd Font Mono
font-size          = 13
font-thicken       = true

font-thicken 在 Retina 屏幕上让字体稍微加粗,提升可读性。如果觉得默认字体间距太紧,可以加一个 adjust-cell-height

adjust-cell-height = 5%

默认值是 0,即不做任何调整。25% 会明显偏大,5%~10% 是比较舒适的范围。

窗口与外观

window-colorspace      = display-p3
window-padding-x       = 1
window-padding-y       = 1
window-padding-color   = extend
window-padding-balance = true
window-step-resize     = false
window-save-state      = always
macos-titlebar-style   = transparent
background-opacity     = 0.98

几个值得注意的配置:

  • window-colorspace = display-p3:macOS 上启用 Display P3 广色域渲染,颜色更丰富准确。这是很多人会忽略的设置。
  • window-padding-balance = true:让终端内容在窗口中自动居中对齐,视觉上更舒适。
  • window-save-state = always:关闭再打开 Ghostty 时恢复之前的窗口位置、标签页和分屏状态。这个设置非常重要——默认值 default 在 macOS 自动更新重启后可能丢失所有 session。
  • background-opacity = 0.98:轻微透明,能隐约看到下方窗口但不影响阅读。如果想要更明显的毛玻璃效果,可以降到 0.85 并配合 background-blur-radius = 20

光标与交互

cursor-style           = block
cursor-style-blink     = false
adjust-cursor-thickness = 2
mouse-hide-while-typing = true
mouse-scroll-multiplier = 2
link-url               = true
  • mouse-scroll-multiplier = 2:默认滚动速度偏慢,翻倍后浏览长输出更高效。
  • link-url = true:终端里的 URL 可以 Cmd+点击 直接在浏览器打开。

安全与行为

clipboard-paste-protection     = true
clipboard-trim-trailing-spaces = true
copy-on-select                 = true
macos-auto-secure-input        = true
confirm-close-surface          = false
auto-update                    = check
scrollback-limit               = 10000
  • clipboard-paste-protection = true:粘贴内容包含换行符时弹出确认,防止误执行命令。这是一个安全功能,建议保持开启。Ghostty 1.3 还修复了一个粘贴注入的安全漏洞(CVE-2026-26982)。
  • confirm-close-surface = false:关闭标签页或分屏时不弹确认框,减少打断。
  • auto-update = check:只检查更新但不自动安装重启,避免意外中断工作。
  • scrollback-limit = 10000:控制回滚缓冲区为 1 万行。默认值很大,如果不限制可能在长时间运行后消耗大量内存。

Shell 集成

shell-integration-features = no-cursor,sudo,title

Ghostty 的 Shell Integration 是一个被低估的功能。启用后可以:

  • Cmd+Up / Cmd+Down:在终端输出中按命令提示符跳转,快速定位到每条命令的位置
  • sudo:输入 sudo 时自动提示
  • title:标签页标题显示当前运行的命令

no-cursor 是因为我自己在 config 里定义了光标样式,不需要 Shell Integration 再覆盖。

macOS 图标自定义

Ghostty 支持自定义 Dock 图标样式,可以让它和你的主题配色统一:

macos-icon             = custom-style
macos-icon-frame       = plastic
macos-icon-ghost-color = #ebdbb2
macos-icon-screen-color = #1d2021

这里的颜色用了 Gruvbox 的前景色和背景色,让图标融入整体视觉。

快捷键配置

基础快捷键

Ghostty 的默认快捷键已经很合理,但有几个值得自定义的:

macos-option-as-alt = true
keybind = cmd+right=text:\x05
keybind = cmd+left=text:\x01
keybind = cmd+backspace=text:\x15
  • macos-option-as-alt = true:让 Option 键作为 Alt 使用,这对 tmux 和 Vim 用户来说是必需的。
  • Cmd+Left/Right:映射到行首/行尾(Ctrl+A / Ctrl+E),符合 macOS 的编辑习惯。
  • Cmd+Backspace:删除整行(Ctrl+U)。

内置分屏

如果不用 tmux,Ghostty 原生就支持分屏:

快捷键 功能
Cmd+D 垂直分屏
Cmd+Shift+D 水平分屏
Cmd+[ / Cmd+] 切换分屏焦点
Cmd+Shift+Enter 当前分屏最大化/还原

配置热重载

Cmd+Shift+, 是 Ghostty 的默认热重载快捷键,不需要额外绑定。修改 config 文件后直接按这个组合键就能生效。但注意:如果修改的是自定义主题文件(而非内置主题),可能需要完全重启才能生效。

Quick Terminal(Quake 下拉终端)

Ghostty 内置了 Quake 风格的下拉终端,用一个全局快捷键可以在任何应用中呼出/收起:

keybind = global:f12=toggle_quick_terminal

这个功能和 iTerm2 的 Visor 模式类似,不需要依赖 Hammerspoon 或其他工具。Quick Terminal 是一个独立于主窗口的轻量终端,适合快速执行一两条命令。

不过如果你已经用 Hammerspoon 做了类似的快捷键绑定(比如 F12 切换 Ghostty 窗口),两者会冲突,需要二选一。

但是你如果依赖 Ghostty 的 Tab,那么还是建议使用 Hammerspoon 来配置。

自定义 Shader 背景

Ghostty 利用 GPU 渲染的优势,支持自定义 GLSL 片段着色器作为终端背景。可以实现 CRT 复古效果、动态渐变、光晕等视觉效果:

custom-shader = ~/.config/ghostty/shaders/bloom.glsl
custom-shader-animation = true

多个 shader 可以叠加使用:

custom-shader = ~/.config/ghostty/shaders/tft.glsl
custom-shader = ~/.config/ghostty/shaders/bettercrt.glsl
custom-shader = ~/.config/ghostty/shaders/bloom.glsl

社区有不少现成的 shader 集合,比如 ghostty-watercolors 提供了水彩画风格的背景。

终端内显示图片

Ghostty 支持 Kitty 图片协议,可以在终端内直接显示图片。配合 imgcat 或 Kitty 的 icat 工具,可以在 SSH 远程服务器上生成图表后直接在终端里预览,不需要再 scp 到本地打开。

Inspector 调试工具

Cmd+Shift+I 可以打开 Ghostty 的内置 Inspector,能查看每个 cell 的属性、颜色值、字体渲染信息。排查显示问题时非常有用——比如某个字符颜色不对,可以用 Inspector 精确查看它用了哪个 palette 颜色。

Ghostty 1.3 新功能

如果你还在用旧版本,强烈建议升级到 1.3。这个版本包含了 6 个月的开发工作,180 位贡献者的 2800+ 次提交,几个亮点功能:

  • Scrollback SearchCmd+F 搜索终端历史输出,用独立线程实现,不影响终端 I/O 性能
  • Click to Move Cursor:在 shell 提示符中点击鼠标直接定位光标位置
  • 原生滚动条:新增 scrollbar 配置项
  • 进程完成通知:长时间运行的命令结束后收到系统通知
  • AppleScript 支持:可以用脚本自动化控制 Ghostty
  • Split 拖拽:拖拽调整分屏边界大小

升级方式:

brew upgrade --cask ghostty

我的完整配置

# vim: ft=ghostty

# Font
font-family                    = MesloLGS Nerd Font Mono
font-size                      = 13
font-thicken                   = true
window-inherit-font-size       = true

# Look and Feel
theme                          = dark:Gruvbox Dark Hard,light:Gruvbox Light Hard
window-colorspace              = display-p3
window-padding-x               = 1
window-padding-y               = 1
window-padding-color           = extend
window-padding-balance         = true
window-step-resize             = false
macos-icon                     = custom-style
macos-icon-frame               = plastic
macos-icon-ghost-color         = #ebdbb2
macos-icon-screen-color        = #1d2021
adjust-cursor-thickness        = 2
cursor-style                   = block
cursor-style-blink             = false
minimum-contrast               = 1.3
link-url                       = true
macos-titlebar-style           = transparent
mouse-hide-while-typing        = true
mouse-scroll-multiplier        = 2
window-save-state              = always
background-opacity             = 0.98

# Behavior
clipboard-paste-protection     = true
clipboard-trim-trailing-spaces = true
copy-on-select                 = true
macos-auto-secure-input        = true
macos-secure-input-indication  = true
confirm-close-surface          = false
quit-after-last-window-closed  = false
auto-update                    = check
scrollback-limit               = 10000
shell-integration-features     = no-cursor,sudo,title

# Key bindings
macos-option-as-alt            = true
keybind                        = cmd+right=text:\x05
keybind                        = cmd+left=text:\x01
keybind                        = cmd+backspace=text:\x15

最后

Ghostty 的设计哲学是”默认即合理”,大多数情况下不需要太多配置就能用得很舒服。上面这些配置是我在实际使用中逐步调整出来的,核心思路是:用内置主题、启用 P3 广色域、控制内存占用、减少不必要的确认弹窗。

如果你从 iTerm2 迁移过来,最大的区别可能是配置方式——从 GUI 菜单变成了纯文本文件。但习惯之后会发现这种方式更适合版本控制和跨设备同步,把 config 文件放到 dotfiles 仓库里就行了。