比 iTerm2 更适合 Claude Code/Codex 的终端,我换成 Ghostty 了

0 阅读6分钟

你好,我是小 G。我把终端从 iTerm2 换到 Ghostty 已经有三个月了。

整体体验还不错,这篇文章来分享一下。

Ghostty 不是 Claude Code 的官方指定终端,但确实被 Claude Code 带火了一把。Claude Code 创始人 Boris Cherny 在聊团队使用习惯时提到,他们的开发团队程序员非常喜欢 Ghostty。

Boris Cherny 提到 Claude Code 团队喜欢 Ghostty

我自己也是看了这个分享,后来被 iTerm2 搞烦了之后转去的。

用 Claude Code 或 Codex CLI 跑久了,终端会变成一个小工作台:一边看 Agent 输出,一边跑测试、看日志、处理 Git。iTerm2 当然也能做,但要调到顺手,通常得花不少时间配字体、主题、快捷键和分屏。Ghostty 的好处是下载下来就已经比较能用,后面只是按自己的习惯微调。

Ghostty 做的事情就是把终端模拟器这件事做好,没有什么花里花哨的。它没有内置 AI,也不是服务器管理器。

当然了,iTerm2 、Warp、Kitty 等等,都是不错的,我希望看到这篇文章的朋友不要因为这些争论,你自己用着顺手才是最重要的!

Ghostty 官网首页

安装

macOS 直接用 Homebrew:

brew install --cask ghostty

也可以去官网下载 .dmg,拖到 Applications。官方 macOS 包是 Ghostty 项目签名并经过 notarize 的;Homebrew cask 用的也是官方 .dmg

装完看一下版本:

/Applications/Ghostty.app/Contents/MacOS/ghostty +version

如果 CLI 已经进 PATH:

ghostty +version

Ghostty 版本检查输出

版本说明:本文按我本机的 Ghostty 1.3.1 校对。Ghostty 更新挺快,配置项以你本机的 ghostty +show-config --default --docs 为准。

Linux 安装方式要看发行版。Arch Linux 可以直接:

sudo pacman -S ghostty

其他发行版优先看官方安装页。Ghostty 官方直接分发的是 macOS 预构建包,Linux 包多由发行版维护者或社区维护;工作机、公司机器上别随手跑来路不明的安装脚本。

先用默认值跑一天

其实你不需要做任何配置都能用,已经能够满足大部分朋友的需求了。

Ghostty 默认内置 JetBrains Mono,也带 Nerd Fonts 能力。大多数人不配字体也能直接用。

刚开始用,别一上来复制几百行配置。先打开跑一天,再改字体、主题、窗口内边距、透明度、剪贴板、Shell Integration 和分屏快捷键。终端配置越长,出问题越难查;Ghostty 值得用的一点,就是可以少配。

配置文件在哪里

Ghostty 配置就是 key = value。当前推荐文件名是 config.ghostty,旧文件名 config 仍会被读取。常见路径:

~/.config/ghostty/config.ghostty
~/.config/ghostty/config

macOS 还会读:

~/Library/Application Support/com.mitchellh.ghostty/config.ghostty
~/Library/Application Support/com.mitchellh.ghostty/config

两个地方都有配置时,macOS 的 Application Support 路径后加载,冲突项会覆盖前面的值。配置不生效,先查这个。

常用检查命令:

ghostty +list-fonts
ghostty +list-themes
ghostty +list-keybinds --default
ghostty +validate-config

改完配置后,macOS 按 Cmd + Shift + , 重载,Linux 按 Ctrl + Shift + ,。透明度这类窗口项不一定热更新,没变化就重启 Ghostty。

我的最小配置

先建目录:

mkdir -p ~/.config/ghostty

编辑配置:

nano ~/.config/ghostty/config.ghostty

可直接用这一份:

# 字体
font-family = "JetBrainsMono Nerd Font Mono"
font-size = 14
font-thicken = true
font-thicken-strength = 80
font-codepoint-map = U+2E80-U+9FFF,U+F900-U+FAFF,U+FF00-U+FFEF=PingFang SC

# 主题
theme = Catppuccin Mocha

# 窗口
window-padding-x = 12
window-padding-y = 10
window-save-state = always
background-opacity = 0.95
background-blur = 20

# 光标和滚动
cursor-style = bar
cursor-style-blink = true
scrollback-limit = 10000000
scrollbar = never

# Shell Integration
shell-integration = detect
shell-integration-features = cursor,sudo,title

# macOS
macos-option-as-alt = left
macos-titlebar-style = transparent
macos-titlebar-proxy-icon = hidden

# 分屏
split-divider-color = #45475a
unfocused-split-opacity = 0.92

# 剪贴板
copy-on-select = false
clipboard-paste-protection = true
clipboard-paste-bracketed-safe = true

字体这里用的是 JetBrainsMono Nerd Font Mono,主要是为了让 Git 分支符号、Starship prompt、Powerline 图标别变成方块。没装的话:

brew install --cask font-jetbrains-mono-nerd-font

中文不要直接把 PingFang SC 当第二个 font-family 乱塞。主字体没命中时,英文可能也落到中文字体上,字距会很怪。font-codepoint-map 只把中文码位交给 PingFang SC,更稳。

copy-on-select = false 是我的习惯。Ghostty 默认选中文本会复制,Linux 用户可能喜欢;在 macOS 上,我更愿意手动 Cmd + C,避免剪贴板被误覆盖。

clipboard-paste-protection = true 建议留着。从网页复制多行命令进终端,本来就应该多一道提醒。

scrollback-limit 的单位是字节,不是行数;10000000 大约是 10 MB,而且每个分屏、标签页都会单独算。

Ghostty 配合 Catppuccin Mocha、JetBrainsMono Nerd Font 和 Starship 的效果

主题

列出内置主题:

ghostty +list-themes

换主题只要一行:

theme = TokyoNight

我一般用:

theme = Catppuccin Mocha

想跟随系统明暗模式:

theme = dark:Catppuccin Mocha,light:Catppuccin Latte

Ghostty 内置主题已经够多。自定义主题本质上也是一段会被 Ghostty 加载的配置片段,大多数只改颜色;从陌生来源下载时,打开看一眼,确认它没有顺手改字体、透明度或 keybind。

Starship 可选

Ghostty 管终端窗口、字体、主题和协议;Starship 管 shell prompt。

想让 prompt 和 Catppuccin 风格一致,可以装:

brew install starship

~/.zshrc 末尾加:

command -v starship >/dev/null && eval "$(starship init zsh)"

想确认 Starship 到底显示了哪些模块,可以在 Git 仓库里跑:

starship explain

Starship explain 展示 prompt 中的路径、分支和 Git 状态

我不建议一开始就把 Starship 模块全开。目录、Git 分支、Git 状态、耗时够用;Kubernetes、云账号、容器这些东西,用到再加。prompt 每次回车都要计算,信息太满反而慢。

分屏和常用快捷键

macOS 下先记这些:

快捷键作用
Cmd + T新标签页
Cmd + W关闭当前终端或分屏
Cmd + D向右分屏
Cmd + Shift + D向下分屏
Cmd + [ / Cmd + ]前后切换分屏
Cmd + Option + 方向键按方向切换分屏
Cmd + Shift + Enter放大/恢复当前分屏
Cmd + F搜索历史输出
Cmd + Shift + ,重载配置
Cmd + Shift + P命令面板

跑 Claude Code 时,三块布局最顺手:

  1. Cmd + D 左右分屏。
  2. 光标放到右侧,Cmd + Shift + D 再上下分屏。
  3. 左侧跑 Claude Code,右上跑测试,右下看日志或 Git。
  4. Claude 输出太长,按 Cmd + Shift + Enter 临时放大。

这个布局不用 tmux,也不用多个窗口来回摆。

Ghostty 分屏运行 Claude Code、开发服务和日志

想自己绑快捷键,用这个格式:

keybind = trigger=action

例如:

keybind = cmd+shift+e=equalize_splits
keybind = cmd+shift+f=toggle_split_zoom

Quick Terminal

Quick Terminal 是从屏幕上方滑下来的临时终端。适合临时跑命令,不适合承载整天的主工作流。

配置:

quick-terminal-position = top
quick-terminal-screen = main
quick-terminal-autohide = true
quick-terminal-animation-duration = 0.15
keybind = global:ctrl+grave_accent=toggle_quick_terminal

Quick Terminal 没有默认快捷键,必须自己绑定 toggle_quick_terminalglobal: 不是所有平台都能用:macOS 需要给 Ghostty 辅助功能权限,Linux/GTK 要看桌面环境是否支持全局快捷键协议。配置没问题但快捷键没反应时,先查系统权限、桌面环境支持和快捷键冲突。

另外,macOS 上改 quick-terminal-position 后需要完整重启 Ghostty。

Shell Integration

这一项我会留着:

shell-integration = detect

Ghostty 会给 zsh、fish、bash、nushell、elvish 加一段集成脚本。开了以后,新分屏会跟着当前目录走;比如你在项目根目录里开右侧分屏,右边不会又回到 home 目录。复杂 prompt 换行和 resize 也少一点错位,历史输出还能按 prompt 跳。

有两个小坑。

macOS 自带 /bin/bash 太老,官方文档说它不支持自动注入;默认 zsh 用户一般不用管。另一个是你在 Ghostty 里手动切 shell,比如进 nix-shell,集成能力可能会丢,需要手动加载对应脚本。

SSH 不急着配

Ghostty 有自己的 terminfo 和协议能力。远程主机不认识时,Neovim、htop 这类 TUI 可能显示异常。

如果你只是偶尔 SSH,先别动。真遇到远程显示问题,再考虑:

shell-integration-features = cursor,title,ssh-env,ssh-terminfo

SSH 环境本来就复杂,没问题时少加一层包装。

常见问题

配置不生效,先查两个目录,再跑校验:

ls -la ~/.config/ghostty
ls -la "$HOME/Library/Application Support/com.mitchellh.ghostty"
ghostty +validate-config

网上有些配置会写 === 字体 === 这种分隔符,Ghostty 不认。注释要写成 # 字体

英文字距很怪,先看字体名有没有命中:

ghostty +list-fonts | rg -i "JetBrains|Mono|Nerd"

如果你写了 font-family = JetBrains Mono,但本机没这个字体,Ghostty 会 fallback。fallback 到中文字体时,英文就容易变丑。装字体,或者改成 Ghostty 实际识别到的 family 名。

主题名以 ghostty +list-themes 输出为准。看到 Catppuccin Mocha,配置里就原样写:

theme = Catppuccin Mocha

透明度没变化,先完整重启 Ghostty。还有一种情况是 Neovim、tmux 自己画了背景色;Ghostty 默认只让窗口背景透明,不保证所有显式背景色的单元格都透明。真要连这些 cell 也一起透明,再看 background-opacity-cells

选中文本把剪贴板覆盖了,就关掉:

copy-on-select = false

Quick Terminal 全局快捷键没反应,查三件事:配置里有没有 global:,系统权限或桌面环境是否支持,快捷键是不是被其他软件占了。

总结

如果只是想换个好看的终端,iTerm2 也能调主题和透明度。

Ghostty 更适合类似我这种适用场景的朋友:每天在终端里跑 Agent、测试、日志,想要原生窗口、默认分屏、可读配置和更轻的长输出体验。

如果你也想体验的话,不如先用默认配置跑一天,再改字体和主题;分屏用顺了,再考虑 Quick Terminal。

如果你也想用我的同款配置的话,不需要自己动手,这样太累了。AI 时代,最简单的方法就是把我这篇文章发送给你最信任的 Coding Agent 例如 Codex、Claude,让它帮你安装配置。

这篇文章已经同步到了 AIGuide:AI 应用开发、AI 编程实战与面试指南(对标 JavaGuide,完全开源免费):

希望这篇文章对大家有帮助,我们下期再见!