技术备忘 Ghostty终端

为什么换

之前用的 iTerm2,没什么不好,就是有点重。打开要等,切换标签偶尔也会顿一下。Ghostty 主打原生性能和 GPU 加速,配置主要走纯文本文件,这一点比较对我胃口。

用了一段时间,整体感受是轻、快、安静。它不是那种到处堆按钮的终端,更多是把窗口、字体、分屏、快捷键这些基础能力做好。终端这种东西,存在感低一点反而是优点。

当前配置

Ghostty 的配置文件现在推荐叫 config.ghostty,旧版本也兼容 config。通用路径是 ~/.config/ghostty/config.ghostty,macOS 也可以放在 ~/Library/Application Support/com.mitchellh.ghostty/config.ghostty。如果你机器上已经有旧的 config,Ghostty 也会继续读取;同一路径下两个文件都存在时,后读取的配置会覆盖前面的同名设置。

我现在的完整配置:

ini
font-size = 13
font-family = Fira Code
font-feature = calt
font-feature = liga
window-padding-x = 12
window-padding-y = 8
window-padding-balance = true
shell-integration = zsh
copy-on-select = clipboard
mouse-hide-while-typing = true
confirm-close-surface = true
auto-update = off
theme = TokyoNight Storm
window-save-state = never
macos-titlebar-style = transparent
background-opacity = 0.86
background-blur = macos-glass-regular
cursor-style = block
macos-option-as-alt = right
quit-after-last-window-closed = true

逐项说明

字体

ini
font-size = 13
font-family = Fira Code
font-feature = calt
font-feature = liga

Fira Code 用了一阵子了,合字符显示代码里的 =>!=-> 这些符号时比较舒服。13 号字对我来说刚好,不大不小。caltliga 都是 OpenType 特性,打开后主要是让代码符号的连写效果更完整。

如果喜欢别的字体,改了就是。唯一要注意的是 Ghostty 字体名要用系统里注册的名字,不是文件名。

窗口

ini
window-padding-x = 12
window-padding-y = 8
window-padding-balance = true

内边距不大,但有了之后内容不贴边,看着舒服点。window-padding-balance 打开后,如果出现侧边滚动条,它会自动给右边也补上相同的边距,保持视觉居中。

主题

ini
theme = TokyoNight Storm

终端主题这个东西挺个人的。TokyoNight Storm 是深色底,对比度适中,不刺眼,长时间看眼睛不累。Ghostty 内置了不少主题,不用额外下载,theme = xxx 一写就行。

查看所有内置主题的方式:

bash
ghostty +list-themes

透明与模糊

ini
macos-titlebar-style = transparent
background-opacity = 0.86
background-blur = macos-glass-regular

这三行配合起来的效果是:标题栏透明,终端背景有一点透明度,并且带毛玻璃模糊。这里要注意,配置项叫 background-opacity,不是 opacity0.86 不算太透,隐约看到后面就够了。macos-glass-regular 是 macOS 上的玻璃效果值,观感更接近系统自己的材质。

习惯实心背景的人可以不加这几行。纯个人喜好。

操作习惯

ini
copy-on-select = clipboard
mouse-hide-while-typing = true
confirm-close-surface = true

copy-on-select 是选中即复制:鼠标选中文字后自动进入剪贴板,不用再按 + C。这可能是用了就回不去的功能之一。

mouse-hide-while-typing 打字时鼠标指针自动隐藏。小细节,但注意到了会觉得舒服。

confirm-close-surface 防止手滑关掉终端——如果还有进程在跑,会弹确认框。赔过一次终端之后就会觉得这个选项值得开。

光标

ini
cursor-style = block

方块光标,像老式终端。也可以用 bar(竖线)或 underline(下划线)。没设闪烁,个人不喜欢会动的东西分散注意力。

macOS 专有

ini
macos-option-as-alt = right

将右侧 键映射为 。这在终端里很有用,很多 shell 操作都靠它: + D 删除一个单词, + B / + F 按词前后跳转。只映射右侧的好处是,左侧 还能继续留给 macOS 的特殊字符输入。

ini
quit-after-last-window-closed = true

关掉最后一个 Ghostty 窗口时直接退出程序,而不是留在后台。个人习惯,觉得干净。

其他

ini
shell-integration = zsh

给当前 shell 开启集成。它不只是标题栏路径这类小功能,还会影响新标签/分屏继承当前工作目录、提示符标记、关闭确认等细节。官方默认是自动检测;我这里直接写 zsh,是因为日常 shell 就是它。

ini
auto-update = off

自动更新关掉。想更新的时候手动更新就行,不喜欢后台偷偷检查。

ini
window-save-state = never

不保存窗口状态。每次打开都是一个干净的新窗口,不恢复上一次的标签页。纯粹是个人偏好。

备份中的一些设置

备份文件里还有一些之前试过后来去掉的配置,有些可能以后还会加回来:

设置说明
scrollbarnever隐藏滚动条,纯靠鼠标滚轮或键盘翻页
mouse-scroll-multiplier2滚轮速度翻倍,减少滚的次数
cursor-opacity0.92光标稍微透明,没那么硬
split-preserve-zoomnavigation分屏导航时保留当前焦点屏的缩放状态
quick-terminal-positiontop快速终端从顶部滑出
quick-terminal-size38%,100%覆盖上半部分,宽度拉满
background-blur-radius20毛玻璃模糊半径

快速终端是个不错的功能——按一下快捷键从屏幕顶部滑出一个终端,用完自动隐藏。适合偶尔想敲个命令但又不想开新窗口的场景。

如果真要打开快速终端,除了位置和尺寸,还需要给 toggle_quick_terminal 绑一个快捷键。比如 macOS 上可以这样写:

ini
quick-terminal-position = top
quick-terminal-size = 38%,100%
keybind = global:cmd+backquote=toggle_quick_terminal

global: 的意思是全局快捷键。macOS 上第一次使用可能需要给 Ghostty 辅助功能权限,否则全局快捷键不会生效。

快捷键备忘

默认快捷键和自定义快捷键要分开记。Ghostty 官方文档里写得比较清楚:配置重载的默认快捷键,macOS 是 + + ,,Linux 是 + + ,。这类默认行为最好直接按官方文档来,不要凭其他终端的习惯硬记。

我自己常用的是下面这些:

快捷键功能配置动作
+ + 全屏切换toggle_fullscreen
+ + D向右分屏new_split:right
+ + + D向下分屏new_split:down
+ + H/J/K/L在分屏间移动焦点goto_split:*
+ + H/J/K/L调整分屏大小resize_split:*
+ + O标签概览toggle_tab_overview
+ + E均分分屏大小equalize_splits
+ + ,重载配置reload_config
+ `快速终端toggle_quick_terminal
+ + F窗口置顶切换toggle_window_float_on_top

如果要自己写进配置文件,格式是 keybind = trigger=action。例如:

ini
keybind = cmd+alt+enter=toggle_fullscreen
keybind = cmd+ctrl+d=new_split:right
keybind = cmd+ctrl+shift+d=new_split:down
keybind = cmd+shift+o=toggle_tab_overview
keybind = cmd+shift+e=equalize_splits
keybind = global:cmd+backquote=toggle_quick_terminal
keybind = cmd+alt+f=toggle_window_float_on_top

分屏移动和调整尺寸也可以继续绑到 H/J/K/L,只是这部分我更建议按自己的手感慢慢加,不一定一开始就全塞进去。

最后

Ghostty 的配置文件不长,改完后按 + + , 就能重载。需要注意的是,并不是所有配置都能立刻热更新;窗口状态、某些 macOS 专有行为之类,可能还是要完全重启 Ghostty 才会生效。

终端这种东西,一旦用顺了就不太会再想起它。这是一件好事——它不应该刷存在感,它应该在你需要的时候,刚好在那里。


参考