Starship 预设(Presets)完全指南:认识 12 个社区配置模板与 `starship preset` 命令的用法
Starship 是一款用 Rust 编写、以"极简、闪电般快速、无限可定制"著称的命令行提示符工具。所谓 预设(Preset),是社区成员预先编写好、可以直接套用的整份 starship.toml 配置方案——从替换符号字体、隐藏运行时版本,到完整复刻 Powerline 主题配色,都可以一键应用。本篇文章以官方文档的 预设总览(对应印尼语版本见 docs/id-ID/presets/README.md)为骨架,结合仓库内的源码与真实 TOML 配置,完整介绍 12 个官方收录的社区预设,并讲解 starship preset 内置命令的底层实现与用法。读完本文,你将能够按需为任何 shell 环境选择、安装、微调甚至贡献一套 Starship 预设。
什么是 Starship 预设:把整套配置变成一份可共享的 TOML
Starship 的全部外观与行为都由一份 TOML 配置文件驱动(默认路径为 ~/.config/starship.toml)。因此"换主题"本质上就是"换配置"。官方文档在 docs/presets/ 下收集了一批由社区提交、经过维护者审核的配置模板,并在 预设总览 中统一索引,每一个预设都附带:
- 一段简明的功能说明(它的设计目标与适用场景);
- 一张真实终端效果截图;
- 一份可直接下载的
.toml文件; - 一条一键应用的安装命令。
所有预设文件都集中存放在 docs/public/presets/toml/(共 12 个 .toml),对应的截图则位于 docs/public/presets/img/。打开任意一份预设文件可以发现,它和一份普通的手写配置没有任何本质区别——第一行往往就是 schema 引用声明,例如:
"$schema" = 'https://starship.rs/config-schema.json'
这意味着预设与你手写的配置共享同一套语法与字段约束,可以放心地作为自定义的起点,而不是不可修改的黑盒。
使用预设的核心命令:starship preset
与其手动下载 TOML 再复制粘贴,Starship 更推荐直接使用内置的 starship preset 子命令。打开终端执行:
# 查看当前版本支持的全部预设名称
starship preset --list
# 将某一预设写入默认配置文件(首次应用推荐方式)
starship preset bracketed-segments -o ~/.config/starship.toml
# 覆盖已存在的配置文件(强制覆盖)
starship preset tokyo-night -o ~/.config/starship.toml -f
命令行参数速查
该子命令在仓库 src/main.rs 中通过 clap 定义,其参数与约束如下表:
| 参数 | 含义 | 约束/默认行为 |
|---|---|---|
<name> |
要输出的预设名称,枚举值限定为官方收录的预设 | 使用 --list 时可不填 |
-o, --output <file> |
将预设内容写入文件而不是标准输出 | 与 --list 互斥 |
-f, --force |
若输出文件已存在则强制覆盖 | 依赖 --output,单独使用无效 |
-l, --list |
列出全部可用的预设名称 | 与 --output 互斥 |
底层是如何实现的
在 src/print.rs 中可以看到 preset_command 的实际逻辑:它调用内置的预设获取函数拿到预设内容后,若指定了 --output 就写入文件(文件已存在且未加 --force 时报错并提示),否则直接打印到标准输出——这正是 starship preset <name> > ~/.config/starship.toml 这种经典用法能成立的原因。
更有意思的是预设内容的来源:仓库的单元测试 src/print.rs 展示了预设与 TOML 文件的绑定关系,例如当命令需要输出 nerd-font-symbols 预设时,其内容是直接通过 include_str!("../docs/public/presets/toml/nerd-font-symbols.toml") 在编译期嵌入二进制中的。也就是说,这些 TOML 不仅是文档目录里的示例,更是官方二进制发布包的一部分——你安装的 Starship 本身就能离线、稳定地输出全部官方预设,不依赖任何网络资源。这种"文档即配置源"的做法,也保证了每个预设的截图、说明与实际配置永远指向同一份文件。
需要提醒:正式发布的二进制只包含随版本收录的预设快照;本仓库(开源开发分支)可能比线上版本包含更新的预设,具体以你本机
starship preset --list的输出为准。
预设全景:12 个官方社区预设的分类与逐个解析
根据改动维度,可以把 12 个预设划分为三大类:符号与字体类(控制图标与字体依赖)、格式与行为类(重组信息结构)、视觉主题类(重新设计颜色与分段布局)。下面逐一说明设计目标与适用场景。
一、符号与字体类预设
这一组预设不改变整体布局,只替换模块中的图标字符,主要解决"字体/终端是否支持 Nerd Font 与 Unicode"的兼容性问题。
1. Nerd Font Symbols(Nerd Font 符号)
该预设把每个模块的符号替换为对应的 Nerd Font 符号,让 git、语言运行时、操作系统等图标在视觉上更丰富。前提是你的终端字体必须安装并启用了 Nerd Font 这类带额外图标的字体,否则会出现"豆腐块"乱码。
2. No Nerd Font(不使用 Nerd Font)
与上一个预设相反,它修改多个模块的符号,使提示符中完全不出现任何 Nerd Font 特殊符号,只依赖常规 ASCII/Unicode 字符,兼容性最强。官方文档还特别注明:该预设计划在 Starship 的后续版本中成为默认预设。对于不开箱即用 Nerd Font 的 CI、远程服务器或团队共享环境,这类配置非常值得作为基线。
3. Plain Text Symbols(纯文本符号)
它把每个模块的符号进一步替换成纯 ASCII 文字(如用文字缩写代替图形图标),适合连普通 Unicode 都无法正确显示的特殊环境。如果你在极简终端、旧终端模拟器或某些受限编码环境下工作,这个预设能保证提示符仍然可读。
4. No Empty Icons(无空图标)
当某个工具链未被检测到时,该预设不再显示对应的"空图标",从而避免提示符中出现孤立、无意义的符号。在多种开发环境之间频繁切换、各环境安装的工具差异较大的用户,会明显感受到提示符变得更干净。
二、格式与行为类预设
这一组重排模块呈现的信息结构,或去除某些冗余信息。
5. Bracketed Segments(方括号分段)
它重写了几乎所有内置模块的 format,让每个段以方括号包裹的形式出现,取代 Starship 默认的 via、on 等描述性连接词(页面开头配图即为其实际效果)。从这份约 300 行的 TOML 可以看到它覆盖范围之广:git、python、rust、nodejs、battery、time、username 等几十个模块全部重写。以几个模块为例:
[aws]
format = '\[[$symbol($profile)(\($region\))(\[$duration\])]($style)\]'
[git_branch]
format = '\[$symbol$branch\]'
[python]
format = '\[${symbol}${pyenv_prefix}(${version})(\($virtualenv\))\]'
[time]
format = '\[$time\]'
注意其中 \[ 与 \] 的转义写法:在 Starship 的 format 字符串语法中,方括号本身承担着"定义带样式的文本段"的语义(例如 $symbol),要输出字面的方括号字符就必须用反斜杠转义。这也是理解 Starship 格式语法的一个绝佳范例——更多格式规则可参考仓库中的 格式解析器实现 与 format 语法说明。
6. No Runtime Versions(隐藏运行时版本)
该预设隐藏各语言运行时的版本号,只保留语言图标。官方文档明确点出它的目标场景:在容器或虚拟化环境里工作时(此时版本信息往往来自宿主机,误导性大),这个预设最合适。它的实现方式非常直观——把所有运行时模块的 format 中的 ($version) 等版本变量删去,例如:
[nodejs]
format = 'via $symbol'
[python]
format = 'via $symbol'
[rust]
format = 'via $symbol'
[golang]
format = 'via $symbol'
[dotnet]
format = '$symbol(🎯 $tfm )'
可以看到这份配置文件一次性列写了 bun、buf、c、cpp、java、ruby、swift、zig、typst 等几十个运行时/语言模块;个别模块如 dotnet 还保留了 .NET 目标框架(TFM) 等版本之外的信息,说明它在"去版本化"的同时也做了取舍,避免把有价值的环境信息一并删光。这为想要"只保留图标"的用户提供了一份可直接照抄的完整清单。
7. Pure Prompt(仿 Pure 提示符)
- 详细说明:docs/presets/pure-preset.md
- 完整配置:pure-preset.toml
该预设模仿 zsh 社区知名极简提示符 Pure 的观感与行为,采用极简、清爽的单行布局,适合偏爱"只显示必要信息"哲学的用户。它证明了 Starship 的 format 与模块配置足以复刻其他优秀提示符的交互体验。
三、视觉主题类预设(Powerline 风格配色)
这一类是视觉效果最抢眼的一组,普遍使用 Powerline 风格的倾斜/连接箭头字符(如 )与逐段渐变背景色,形成连续的分段配色。
8. Pastel Powerline
灵感来自 oh-my-posh 的 M365Princess 主题,整体使用柔和的"粉彩"配色。官方文档还特别指出它同时演示了 Starship 的目录替换(path substitution)机制——即把常见目录名在提示符中替换为带颜色的图标文字,相关配置语法可参见 directory 模块说明。想学习如何把某个目录显示成图标,这份预设是最直观的范例。
9. Tokyo Night
- 详细说明:docs/presets/tokyo-night.md
- 完整配置:tokyo-night.toml
配色灵感来自广受欢迎的 Tokyo Night 编辑器主题(如 tokyo-night-vscode-theme),深蓝夜空色调搭配紫、蓝高亮。从它的 TOML 可以学到整套"分段配色"的编排手法——在顶层 format 里通过 [bg:#… fg:#…] 为每个模块段的背景着色,并用 这样的"颜色渐变箭头"把段落衔接起来:
format = """
[░▒▓](#a3aed2)\
$os\
\
$directory\
\
$git_branch\
$git_status\
\
$nodejs\
$bun\
$rust\
$golang\
$php\
\
$time\
\
\n$character"""
同时它还演示了如何整体修改模块的配色与符号,例如用 [directory.substitutions] 把 Documents、Downloads、Music、Pictures 等目录名映射为图标字符,并为 git_branch、nodejs、rust 等模块统一指定符号与背景色。若需要"目录替换"语法,可对照 docs/advanced-config/README.md 中关于 directory.substitutions 的说明阅读。
10. Gruvbox Rainbow
官方文档说明它大量借鉴了 Pastel Powerline 与 Tokyo Night:在保留 Powerline 分段彩虹配色结构的同时,将调色板切换为复古暖色调的 Gruvbox 色系。可见预设之间并非互相孤立,社区常在已有结构上做调色与微调,形成新主题。
11. Catppuccin Powerline
它是 Gruvbox Rainbow 的一个极小改动版本:结构几乎不变,仅把配色换成 Catppuccin 主题色板(柔和、低饱和的莫兰迪风格)。如果你喜欢 Rainbow 的布局但更中意 Catppuccin 色调,这份预设就是现成的答案;同时它也是"在别人预设上改色"最省事的范例。
12. Jetpack
- 详细说明:docs/presets/jetpack.md
- 完整配置:jetpack.toml
一个"伪极简(pseudo minimalist)"预设,灵感来自 zsh 的 geometry 与 spaceship 两款知名提示符。所谓"伪极简",是指它看起来信息不多,却仍保留了 git 状态、运行时版本等关键上下文,在简洁与实用之间取平衡。如果你觉得 Pure 太素、又嫌完整 Powerline 主题太花,Jetpack 是两者之间的折中选择。
浏览更多:各预设的完整独立文档
上面的每个小节只做了要点提炼;官方为 12 个预设分别维护了独立页面,包含各自的完整介绍、效果截图与安装命令,推荐按需深入阅读:
| 预设 | 独立说明文档 | 可直接下载的配置 |
|---|---|---|
| Nerd Font Symbols | docs/presets/nerd-font.md | nerd-font-symbols.toml |
| No Nerd Font | docs/presets/no-nerd-font.md | no-nerd-font.toml |
| Bracketed Segments | docs/presets/bracketed-segments.md | bracketed-segments.toml |
| Plain Text Symbols | docs/presets/plain-text.md | plain-text-symbols.toml |
| No Runtime Versions | docs/presets/no-runtimes.md | no-runtime-versions.toml |
| No Empty Icons | docs/presets/no-empty-icons.md | no-empty-icons.toml |
| Pure Prompt | docs/presets/pure-preset.md | pure-preset.toml |
| Pastel Powerline | docs/presets/pastel-powerline.md | pastel-powerline.toml |
| Tokyo Night | docs/presets/tokyo-night.md | tokyo-night.toml |
| Gruvbox Rainbow | docs/presets/gruvbox-rainbow.md | gruvbox-rainbow.toml |
| Jetpack | docs/presets/jetpack.md | jetpack.toml |
| Catppuccin Powerline | docs/presets/catppuccin-powerline.md | catppuccin-powerline.toml |
安装与落地:把预设写入真实配置
应用预设的本质动作只有一步:让预设 TOML 内容成为 starship.toml 的当前内容。官方推荐的做法是直接在命令里完成输出与落盘,例如:
# 方案 A:写入默认配置(若文件已存在会提示错误,避免误覆盖)
starship preset nerd-font-symbols -o ~/.config/starship.toml
# 方案 B:确认无误后强制覆盖既有配置
starship preset gruvbox-rainbow -o ~/.config/starship.toml -f
# 方案 C:先输出到标准输出查看,再手动重定向
starship preset pure-preset
写入后需要重启终端(或执行 exec $SHELL)让新的配置重新加载。建议的做法是:先用 starship preset --list 确认本机可用的预设名,再用不带 -f 的命令落盘;若担心丢失当前手写配置,可先将现有 starship.toml 备份,或把预设输出到临时文件后再手动挑选合并。所有预设 TOML 均与 starship.toml 同构,随时可以作为后续手工微调的起点。
若只是想为特定目录替换、模块配色等做定向修改,可直接对照 完整配置参考 与 进阶配置指南 阅读相关模块的字段语义;配置文件中的全部字段还受 config-schema.json 校验约束,写错键名时 starship 会在解析阶段给出明确的错误提示。
贡献你自己的预设
预设体系之所以丰富,正因为它是一个开放的社区共建机制。文档 docs/presets/README.md 明确写明:如果你有一个预设想分享,直接提交 PR 更新这份 README 即可——追加一段预设描述、放上一张终端截图,并将对应的 .toml 放入 docs/public/presets/toml/。被合并后,它还会通过编译期嵌入机制(见上文 src/print.rs 的测试约束)出现在后续版本的 starship preset 列表中,让所有安装者一条命令即可应用你的配色方案。无论是调色、改字体符号,还是重新编排模块布局,只要产出的是完整可用的 starship.toml,就值得加入这个集合。
小结:按需选用预设,再以源码知识驾驭它
Starship 的预设体系用一句话概括就是:一套用 TOML 表达、随二进制分发、可一键套用的社区配置模板。符号字体类预设解决兼容性,格式行为类预设重塑信息密度,主题类预设提供开箱即用的高颜值配色;而 starship preset 命令(参数与语义定义于 src/main.rs,实现于 src/print.rs)让这一切无需上网拷贝即可离线完成。理解了预设 TOML 中 format 字符串的转义规则、模块级覆盖写法与 directory.substitutions 这类高级语法后,你完全可以先套用预设、再手工微调,最终形成属于自己的一站式终端体验。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0629
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00

