跳转至

Ghostty: Zig 编写的高性能 GPU 终端模拟器

为什么要学 Ghostty

终端模拟器是开发者每天使用时间最长的工具之一,但大多数终端要么功能强大但启动慢(iTerm2),要么轻量快速但缺少功能(Alacritty)。Ghostty 由 Mitchell Hashimoto(HashiCorp 创始人,Vagrant/Terraform/Consul 的作者)开发,目标是同时做到高性能功能丰富

维度传统终端Ghostty
渲染方式CPU 渲染GPU 加速(Metal/OpenGL/Vulkan)
启动速度慢 (Electron) 或一般毫秒级启动
语言C/C++/Rust/ElectronZig(接近 C 性能,更安全)
原生体验包装层真正的原生 GUI(macOS/GTK)
配置方式各种格式简单的键值对文件
字体渲染因平台而异自研字体渲染引擎

Ghostty 的核心理念是:终端不应该让你在速度和功能之间做选择


核心概念

白话解释

Ghostty 不只是"又一个终端"。它从底层重新构建了终端模拟器的核心组件:

  1. 自研终端解析器:用 Zig 编写的 VT 终端解析器,比大多数终端更准确
  2. GPU 渲染管线:文字渲染直接走 GPU,滚动和大量输出时不卡顿
  3. 原生平台集成:macOS 上是真正的 Cocoa 应用,Linux 上是原生 GTK 应用
  4. libghostty:底层是一个可复用的终端库,GUI 只是这个库的前端

核心概念表

概念说明意义
GPU 渲染使用显卡渲染文字和界面大量输出时保持流畅
VT 解析器虚拟终端转义序列解析更准确的终端兼容性
libghostty底层终端库可嵌入其他应用
Surface一个终端渲染表面(窗口/标签/分屏)灵活的界面组织
配置热重载修改配置即时生效无需重启调试配置
Keybind自定义快捷键绑定个性化操作方式
Font FeaturesOpenType 字体特性连字、变体字形等

Ghostty vs 其他终端

特性GhosttyAlacrittyiTerm2KittyWezTerm
语言ZigRustObj-CC/PythonRust
GPU 渲染部分
原生 GUI是(macOS)
分屏
标签页
图片显示
配置方式键值对TOMLGUIconfLua
跨平台macOS/Linux全平台macOSLinux/macOS全平台

安装配置

系统要求

  • macOS 13+ 或 Linux(X11/Wayland)
  • 支持 GPU 加速的显卡
  • Zig 0.13+(从源码编译时需要)

安装方式

macOS — Homebrew

brew install --cask ghostty

macOS — 手动下载

从官方网站 https://ghostty.org 下载 DMG 安装包。

Linux — 包管理器

# Arch Linux
pacman -S ghostty

# NixOS / nix
nix-env -iA nixpkgs.ghostty

# 其他发行版从源码编译

从源码编译

git clone https://github.com/ghostty-org/ghostty.git
cd ghostty
zig build -Doptimize=ReleaseFast
# 二进制文件在 zig-out/bin/ghostty

配置文件

Ghostty 的配置文件位于 ~/.config/ghostty/config,使用简单的键值对格式:

# ~/.config/ghostty/config

# 字体设置
font-family = JetBrains Mono
font-size = 14
font-feature = calt
font-feature = liga

# 主题
theme = catppuccin-mocha

# 窗口设置
window-padding-x = 10
window-padding-y = 10
window-decoration = true
window-theme = dark

# 鼠标
mouse-hide-while-typing = true

# 光标
cursor-style = block
cursor-style-blink = false

# 剪贴板
clipboard-read = allow
clipboard-write = allow

# Shell 集成
shell-integration = detect

# 性能
vsync = true

主题设置

# 使用内置主题
theme = catppuccin-mocha
# 或
theme = tokyo-night
# 或
theme = gruvbox-dark

# 自定义颜色(覆盖主题)
background = #1a1b26
foreground = #c0caf5
selection-background = #33467c
selection-foreground = #c0caf5

快速上手

基本操作

打开 Ghostty 后,你会看到一个简洁的终端窗口。

窗口管理

操作macOS 快捷键Linux 快捷键
新标签页Cmd+TCtrl+Shift+T
关闭标签页Cmd+WCtrl+Shift+W
切换标签页Cmd+1-9Alt+1-9
垂直分屏Cmd+DCtrl+Shift+D
水平分屏Cmd+Shift+DCtrl+Shift+E
切换分屏Cmd+[ / Cmd+]Ctrl+Shift+[ / ]
全屏Cmd+EnterF11

文本操作

操作macOS 快捷键
复制Cmd+C
粘贴Cmd+V
搜索Cmd+F
放大字体Cmd++
缩小字体Cmd+-
重置字体大小Cmd+0

Shell 集成

Ghostty 内置了 Shell 集成功能,自动为 Bash、Zsh、Fish 注入辅助脚本:

# 配置文件中启用(默认自动检测)
shell-integration = detect

Shell 集成提供的功能: - 命令执行状态在提示符上标记(成功/失败) - 跳转到上一个/下一个命令提示符 - 选中上一个命令的输出

使用 Ghostty 的日常工作流

# 1. 打开 Ghostty,创建你的工作布局
# Cmd+D 垂直分屏:左边编辑器,右边终端
# Cmd+Shift+D 水平分屏:右下角放日志监控

# 2. 左侧窗格:编辑代码
vim main.go

# 3. 右上窗格:运行和测试
go run .

# 4. 右下窗格:查看日志
tail -f /var/log/app.log

进阶用法

自定义快捷键

# ~/.config/ghostty/config

# 自定义快捷键
keybind = ctrl+shift+r=reload_config
keybind = ctrl+shift+f=toggle_fullscreen
keybind = ctrl+shift+plus=increase_font_size:1
keybind = ctrl+shift+minus=decrease_font_size:1

# 绑定快捷键到 Shell 命令
keybind = ctrl+shift+g=text:lazygit\n
keybind = ctrl+shift+h=text:htop\n

# 解绑默认快捷键
keybind = ctrl+shift+n=unbind

高级字体配置

# 主字体
font-family = JetBrains Mono
font-family-bold = JetBrains Mono Bold
font-family-italic = JetBrains Mono Italic
font-family-bold-italic = JetBrains Mono Bold Italic

# 字号和行距
font-size = 14
adjust-cell-height = 20%

# OpenType 字体特性
font-feature = calt   # 上下文替代
font-feature = liga   # 标准连字
font-feature = ss01   # 风格集 1

# 字体变体(可变字体)
font-variation = wght=450

图片和图形支持

Ghostty 支持 Kitty 图形协议,可以在终端中显示图片:

# 需要支持的工具
# 使用 kitty 的 icat
kitty +kitten icat image.png

# 使用 timg
timg photo.jpg

# 使用 viu
viu image.png

配置热重载

Ghostty 支持配置文件热重载,修改后立即生效:

# 编辑配置
vim ~/.config/ghostty/config

# 修改字体大小
# font-size = 16

# 保存后自动生效,无需重启 Ghostty
# 也可以手动触发: Ctrl+Shift+R (如果绑定了)

多配置切换

# 创建不同场景的配置
# ~/.config/ghostty/config — 默认配置
# 通过环境变量或命令行参数切换

# 命令行指定配置选项
ghostty --font-size=18 --theme=light

# 通过 config-file 选项加载额外配置
ghostty --config-file=~/.config/ghostty/presentation.conf

与 tmux/Zellij 的协同

虽然 Ghostty 自带分屏,但你仍然可以搭配终端复用器:

# 如果使用 tmux,确保颜色正确
term = xterm-256color

# 如果使用 Zellij
# Ghostty 的分屏和 Zellij 分屏各有优势
# Ghostty 分屏:GPU 渲染,原生体验
# Zellij 分屏:SSH 后可恢复,更灵活的布局

编写 Ghostty 主题

# 创建自定义主题文件
# ~/.config/ghostty/themes/my-theme

palette = 0=#1d1f21
palette = 1=#cc6666
palette = 2=#b5bd68
palette = 3=#f0c674
palette = 4=#81a2be
palette = 5=#b294bb
palette = 6=#8abeb7
palette = 7=#c5c8c6
palette = 8=#969896
palette = 9=#cc6666
palette = 10=#b5bd68
palette = 11=#f0c674
palette = 12=#81a2be
palette = 13=#b294bb
palette = 14=#8abeb7
palette = 15=#ffffff

background = #1d1f21
foreground = #c5c8c6
cursor-color = #c5c8c6
selection-background = #373b41
selection-foreground = #c5c8c6

常见问题

Q1: Ghostty 支持 Windows 吗?

截至目前,Ghostty 不支持原生 Windows。支持 macOS 和 Linux。Windows 用户可以通过 WSL 在 Linux 环境中体验类似功能,但 GUI 部分需要原生 macOS 或 Linux 桌面。

Q2: 和 Alacritty 比,我该选哪个?

  • Ghostty:如果你需要分屏、标签页、图片支持、Shell 集成
  • Alacritty:如果你要极致简单,只需要一个快速的终端窗口(搭配 tmux)
  • Ghostty:如果你在 macOS 上想要最好的原生体验

Q3: 字体显示模糊怎么办?

# 确保使用合适的字体和渲染设置
font-family = JetBrains Mono
font-size = 14

# macOS 上尝试
window-vsync = true
macos-non-native-fullscreen = false

Q4: 为什么选择 Zig 而不是 Rust?

Mitchell Hashimoto 选择 Zig 的理由: - Zig 可以直接调用 C 代码,方便集成系统 API - 没有隐藏的控制流(Rust 的 Drop、Deref 等) - 编译速度更快 - 更接近底层,适合终端模拟器这种系统级应用

Q5: 配置文件错误怎么调试?

# Ghostty 启动时会在终端输出配置解析警告
# 查看日志
ghostty --help

# 也可以逐行添加配置,保存后观察是否热重载正常

Q6: 如何迁移 iTerm2/Alacritty 的配置?

没有自动迁移工具,但核心配置项很少: - 字体:font-family + font-size - 颜色主题:使用内置主题或复制色值 - 快捷键:keybind 行逐个设置 - 大多数配置可以在 10 分钟内完成


参考资源

资源链接
官方网站https://ghostty.org
GitHub 仓库https://github.com/ghostty-org/ghostty
配置文档https://ghostty.org/docs/config
主题集合https://github.com/ghostty-org/ghostty/tree/main/themes
Zig 语言https://ziglang.org
Mitchell Hashimoto 介绍 Ghostty搜索 "Mitchell Hashimoto Ghostty"

总结:Ghostty 是一个罕见的"既快又全"的终端模拟器。如果你在 macOS 或 Linux 上工作,想要一个启动快、渲染流畅、功能完整的终端,Ghostty 是目前最值得尝试的选择之一。它的简单配置格式和热重载特性让上手门槛非常低。