用 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 加速 | 特点 | 顾虑 |
|---|---|---|---|
| Alacritty | OpenGL | 极简,性能顶级 | 功能太少,没有 Tab/分屏 |
| WezTerm | OpenGL | 功能丰富,Lua 配置 | 配置复杂,启动略慢 |
| Kitty | OpenGL | 功能/性能平衡,配置简单 | - |
最后选 Kitty,主要看中几点:
-
性能靠谱 :官方性能测试显示,Kitty 在 macOS 上的输入延迟和 Terminal.app 并列最低,吞吐量测试也是最快的。通过 GPU 缓存字符的 alpha mask 并行渲染,CPU 占用低。
-
功能够用 :Tab、分屏、图片显示、超链接点击都有,还支持自己的图形协议。
-
配置简单 :一个
kitty.conf文件搞定,不像 WezTerm 需要写 Lua。 -
稳定:项目成熟,用的人多,踩坑少。
迁移的痛点
换过来之后发现,Kitty 的默认配置和 Ghostty 差别挺大的。用惯了 Ghostty 的体验,切到 Kitty 各种不适应。
逐个解决:
痛点 1:颜色不对,Claude Code 输出看着别扭
第一个发现的问题:Claude Code 的输出颜色看起来不太对,有些文字颜色和 Ghostty 里不一样。
对比了一下,发现是 ANSI 颜色配置不同。Ghostty 用的是自己的 StyleDark 主题,Kitty 默认是另一套配色。
用 ghostty +show-config --default 可以导出 Ghostty 的默认配置,把颜色值搬过来:
bash
# 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 让它自动处理反色:
bash
selection_background none
selection_foreground none
痛点 3:字体比 Ghostty 粗
切过来总觉得字体比 Ghostty 粗一点,看久了眼睛累。
查了下,Ghostty 默认 font-thicken = false,而 Kitty 在 macOS 上有字体加粗渲染。禁用掉:
bash
macos_thicken_font 0
text_composition_strategy platform
痛点 4:快捷键全废了
Ghostty 默认支持的几个常用快捷键,Kitty 都没有或者行为不同:
| 快捷键 | Ghostty | Kitty 默认 |
|---|---|---|
Cmd+T |
新建 Tab,继承当前目录 | 新建 Tab,回到 home |
Cmd+数字 |
切换 Tab | 不生效 |
Cmd+W |
关闭 Tab | 不生效 |
Cmd+D |
垂直分屏 | 不生效 |
Cmd+K |
清屏 | 不生效 |
手动配置:
bash
# 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:行为细节不一致
还有一些小差异让人不适应:
| 功能 | Ghostty | Kitty 默认 |
|---|---|---|
| 窗口内边距 | 2px | 更大 |
| 选中自动复制 | 开启 | 关闭 |
| 关闭确认 | 有 | 没有 |
bash
window_padding_width 2
copy_on_select yes
confirm_os_window_close 1
完整配置
这是我修改配置后的 ~/.config/kitty/kitty.conf,直接复制就能用:
bash
# ===== 字体设置 =====
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 的性能,网上有不少讨论。简单总结:
| 维度 | Ghostty | Kitty |
|---|---|---|
| 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,介绍文章):
- code-review-skill - 代码审查技能,覆盖 React 19、Vue 3、TypeScript、Rust 等约 9000 行规则(详细介绍)
- 5-whys-skill - 5 Whys 根因分析,说"找根因"自动激活
- first-principles-skill - 第一性原理思考,适合架构设计和技术选型
全栈项目(适合学习现代技术栈):
- 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