Ghostty vs Kitty:为了跑 Claude Code,我做了这个决定

481 阅读7分钟

用 Ghostty 跑 Claude Code(cc)的时候,遇到个头疼的问题:内存爆了。

我的使用习惯是开多个 Ghostty 窗口跑 cc,同时处理不同的任务。大概每隔 2 天,Mac 就会弹出"内存不足"的提示,然后系统开始一个一个停止正在运行的应用——先是浏览器的标签页,然后是 VS Code,最后连 Finder 都卡死。每次都得强制重启,手头的工作全断了。

搜了一圈,发现不少人有类似的问题,Ghostty 1.2.1 版本确实存在内存泄漏,官方在 1.2.2 修复了一部分,但 TUI 应用(比如 Claude Code 这种)跑久了还是容易出问题。

Ghostty 本身是个很棒的终端——GPU 加速、原生 macOS 体验、开箱即用的配色都很舒服。Mitchell Hashimoto(HashiCorp 创始人)做的东西,品质确实没话说。但内存问题实在影响日常使用,只能换个终端试试。

选了 Kitty。同样是 GPU 加速,性能口碑不错,而且高度可配置。

为什么是 Kitty

在选择替代方案的时候,对比了几个主流的 GPU 加速终端:

终端GPU 加速特点顾虑
AlacrittyOpenGL极简,性能顶级功能太少,没有 Tab/分屏
WezTermOpenGL功能丰富,Lua 配置配置复杂,启动略慢
KittyOpenGL功能/性能平衡,配置简单-

最后选 Kitty,主要看中几点:

  1. 性能靠谱官方性能测试显示,Kitty 在 macOS 上的输入延迟和 Terminal.app 并列最低,吞吐量测试也是最快的。通过 GPU 缓存字符的 alpha mask 并行渲染,CPU 占用低。

  2. 功能够用:Tab、分屏、图片显示、超链接点击都有,还支持自己的图形协议

  3. 配置简单:一个 kitty.conf 文件搞定,不像 WezTerm 需要写 Lua。

  4. 稳定:项目成熟,用的人多,踩坑少。

迁移的痛点

换过来之后发现,Kitty 的默认配置和 Ghostty 差别挺大的。用惯了 Ghostty 的体验,切到 Kitty 各种不适应。

逐个解决:

痛点 1:颜色不对,Claude Code 输出看着别扭

第一个发现的问题:Claude Code 的输出颜色看起来不太对,有些文字颜色和 Ghostty 里不一样。

对比了一下,发现是 ANSI 颜色配置不同。Ghostty 用的是自己的 StyleDark 主题,Kitty 默认是另一套配色。

ghostty +show-config --default 可以导出 Ghostty 的默认配置,把颜色值搬过来:

# Ghostty 默认主题色
background #282c34
foreground #ffffff

# ANSI 颜色 - 完全匹配 Ghostty
color0  #1d1f21
color1  #cc6666
color2  #b5bd68
color3  #f0c674
color4  #81a2be
color5  #b294bb
color6  #8abeb7
color7  #c5c8c6
color8  #666666
color9  #d54e53
color10 #b9ca4a
color11 #e7c547
color12 #7aa6da
color13 #c397d8
color14 #70c0b1
color15 #eaeaea

痛点 2:选中文字直接消失

选中一段文字,发现整块变成白色,完全看不见选了啥。

原因是 Kitty 默认的选区颜色有问题。改成 none 让它自动处理反色:

selection_background none
selection_foreground none

痛点 3:字体比 Ghostty 粗

切过来总觉得字体比 Ghostty 粗一点,看久了眼睛累。

查了下,Ghostty 默认 font-thicken = false,而 Kitty 在 macOS 上有字体加粗渲染。禁用掉:

macos_thicken_font 0
text_composition_strategy platform

痛点 4:快捷键全废了

Ghostty 默认支持的几个常用快捷键,Kitty 都没有或者行为不同:

快捷键GhosttyKitty 默认
Cmd+T新建 Tab,继承当前目录新建 Tab,回到 home
Cmd+数字切换 Tab不生效
Cmd+W关闭 Tab不生效
Cmd+D垂直分屏不生效
Cmd+K清屏不生效

手动配置:

# Tab 操作
map cmd+t new_tab_with_cwd
map cmd+w close_tab
map cmd+1 goto_tab 1
map cmd+2 goto_tab 2
map cmd+3 goto_tab 3
map cmd+4 goto_tab 4
map cmd+5 goto_tab 5
map cmd+6 goto_tab 6
map cmd+7 goto_tab 7
map cmd+8 goto_tab 8
map cmd+9 goto_tab 9

# 分屏
map cmd+d launch --location=vsplit --cwd=current
map cmd+shift+d launch --location=hsplit --cwd=current
map cmd+[ previous_window
map cmd+] next_window

# 其他
map cmd+k clear_terminal scroll active
map cmd+equal change_font_size all +1.0
map cmd+minus change_font_size all -1.0
map cmd+0 change_font_size all 0
map cmd+, edit_config_file
map cmd+shift+, load_config_file

痛点 5:行为细节不一致

还有一些小差异让人不适应:

功能GhosttyKitty 默认
窗口内边距2px更大
选中自动复制开启关闭
关闭确认没有
window_padding_width 2
copy_on_select yes
confirm_os_window_close 1

完整配置

这是我修改配置后的 ~/.config/kitty/kitty.conf,直接复制就能用:

# ===== 字体设置 =====
font_family      Menlo
font_size        13.0

# ===== 窗口设置 - 匹配 Ghostty =====
window_padding_width 2
macos_titlebar_color background

# ===== 颜色 - Ghostty 默认主题 =====
background #282c34
foreground #ffffff

# 光标
cursor #ffffff
cursor_text_color #282c34

# 选区 - 自动颜色
selection_background none
selection_foreground none

# ANSI 颜色 - 完全匹配 Ghostty
color0  #1d1f21
color1  #cc6666
color2  #b5bd68
color3  #f0c674
color4  #81a2be
color5  #b294bb
color6  #8abeb7
color7  #c5c8c6
color8  #666666
color9  #d54e53
color10 #b9ca4a
color11 #e7c547
color12 #7aa6da
color13 #c397d8
color14 #70c0b1
color15 #eaeaea

# ===== 行为设置 =====
# 选中自动复制
copy_on_select yes

# 关闭确认
confirm_os_window_close 1

# scrollback
scrollback_lines 10000000

# ===== macOS 优化 =====
macos_option_as_alt yes

# ===== Tab 栏设置 =====
tab_bar_edge bottom

# ===== 快捷键 - 匹配 Ghostty =====
# Tab 操作
map cmd+t new_tab_with_cwd
map cmd+w close_tab
map cmd+1 goto_tab 1
map cmd+2 goto_tab 2
map cmd+3 goto_tab 3
map cmd+4 goto_tab 4
map cmd+5 goto_tab 5
map cmd+6 goto_tab 6
map cmd+7 goto_tab 7
map cmd+8 goto_tab 8
map cmd+9 goto_tab 9

# 分屏
map cmd+d launch --location=vsplit --cwd=current
map cmd+shift+d launch --location=hsplit --cwd=current
map cmd+[ previous_window
map cmd+] next_window

# 清屏
map cmd+k clear_terminal scroll active

# 字号调整
map cmd+equal change_font_size all +1.0
map cmd+minus change_font_size all -1.0
map cmd+0 change_font_size all 0

# 打开配置
map cmd+, edit_config_file

# 重载配置
map cmd+shift+, load_config_file

# ===== 字体渲染 - 匹配 Ghostty =====
# 禁用 macOS 字体加粗
macos_thicken_font 0

# 使用平台原生渲染策略
text_composition_strategy platform

性能对比

关于 Ghostty 和 Kitty 的性能,网上有不少讨论。简单总结:

维度GhosttyKitty
IO 吞吐号称比 Kitty 快 4x(纯文本读取)也很快,实际体感差不多
输入延迟优秀macOS 最低延迟之一
渲染Metal(macOS 原生)OpenGL
内存TUI 应用有泄漏风险稳定

Mitchell Hashimoto 自己也说过,"在大多数 benchmark 里 Ghostty 比 Kitty 好,但实际使用中(比如跑 Htop、Helix)你感觉不出差别"。

对我来说,选 Kitty 的核心原因就一个:稳定。跑 Claude Code 长任务不会 OOM,这比快那么一点点重要多了。

迁移后的体验

用了几天,内存问题确实没了。Kitty 跑 Claude Code 长时间任务也很稳定,内存占用保持在合理范围。

配置完成后,使用体验和 Ghostty 基本一致:

  • 颜色、字体渲染都对上了
  • 快捷键习惯不用改
  • 分屏、Tab 管理都正常

唯一的遗憾是 Ghostty 的 UI 确实更好看一点,原生 macOS 的感觉更强。但稳定性是第一位的,颜值可以妥协。

如果你也被 Ghostty 的内存问题困扰,Kitty 是个靠谱的替代方案。希望这份配置能帮你少踩点坑。


如果你觉得这篇文章有帮助,欢迎关注我的 GitHub,下面是我的一些开源项目:

Claude Code Skills(按需加载,意图自动识别,不浪费 token,介绍文章):

全栈项目(适合学习现代技术栈):

  • prompt-vault - Prompt 管理器,用的都是最新的技术栈,适合用来学习了解最新的前端全栈开发范式:Next.js 15 + React 19 + tRPC 11 + Supabase 全栈示例,clone 下来配个免费 Supabase 就能跑
  • chat_edit - 双模式 AI 应用(聊天+富文本编辑),Vue 3.5 + TypeScript + Vite 5 + Quill 2.0 + IndexedDB