Starship 社区预设(Presets)索引全解析:从「Voreinstellungen」清单到一键应用现成主题
Starship 是官方定位为 "The cross-shell prompt for astronauts"(见 src/main.rs)的跨 Shell 提示符工具。为了帮助用户不写 TOML 也能快速获得精美且风格各异的提示符外观,项目在文档区维护了一份「预设(Presets / 德语 Voreinstellungen)」索引。本文以仓库中德国语文档 docs/de-DE/presets/README.md 为骨架,完整梳理其中收录的 12 个社区预设:各自的定位与适用场景、对应的 starship preset 应用命令、预设 TOML 的存储位置,并借助源码讲清预设内容如何进入 Starship 二进制、如何被 CLI 写出。读完你既能像查目录一样快速找到合眼缘的预设,也能理解"预设机制"的底层实现,从而自由改造出自己的风格。
这份 Presets 索引文档是什么
在 Starship 文档体系中,docs/presets/README.md(英文原版)与其各语言译本是一份"预设导航页",德语版即 docs/de-DE/presets/README.md。它本身不贴完整配置,而是做三件事:
- 说明预设来源:这是由社区提交(community-submitted)的 Starship 配置预设合集,如果你有想分享的预设,可以通过提交 Pull Request 更新该索引(原文档以 😊 注明这一点);
- 给出每个预设的一句话定位(德语),例如 "Nerd Font-Symbole"、"Pure Prompt"、"Pastell Powerline";
- 用截图引导用户:原文档说明"点击图片即可查看该预设的使用细节(Vorgehen)",即跳转到对应的独立预设详情页。
因此,该索引的本质是"画廊 + 入口清单"。文章后面的小节会把每个条目展开成独立的可执行方案。
快速上手:用 starship preset 一键应用预设
先决条件只有一个:当前 Shell 已安装 starship 并在提示符中启用(安装方式见 安装指南,德语版见 docs/de-DE/installing/README.md)。
预设本体是完整的 starship.toml 片段,应用预设就是把对应 TOML 内容写入你的 starship 配置文件(示例命令统一使用 Linux/macOS 常见位置 ~/.config/starship.toml,即 CLI 参数中的默认输出目标示例)。
查看/应用命令的基本形态(来自各预设详情页,如 nerd-font 预设详情):
# 将指定预设的内容打印到标准输出(预览用)
starship preset nerd-font-symbols
# 将指定预设写入 starship 配置文件
starship preset nerd-font-symbols -o ~/.config/starship.toml
CLI 实际支持的能力比这更多,均定义在 src/main.rs 的 Preset 子命令中:
| 参数 | 作用 |
|---|---|
starship preset <名称> |
打印指定预设内容到 stdout;名称支持 shell 补全(clap ValueEnum) |
-o, --output <文件> |
把预设内容写入指定文件,而非打印到 stdout |
-f, --force |
当输出文件已存在时强制覆盖(要求与 -o 搭配使用) |
--list |
列出全部可用的预设名称(等价于遍历编译进二进制的预设清单) |
应用前建议先备份你现有的配置,因为 -o 是整体写入而非追加:
# 先备份当前配置
cp ~/.config/starship.toml ~/.config/starship.toml.bak
# 列出全部可用预设
starship preset --list
# 预览某个预设内容
starship preset tokyo-night
# 覆盖写入(配合 -f 强制覆盖已存在文件)
starship preset tokyo-night -o ~/.config/starship.toml -f
如果你希望某套配置只作为"底色"再叠加自己的模块,也可以把预览输出中的颜色、format 片段手工摘进你自己的配置(详见后文"如何改造")。
预设机制的源码支撑:TOML 存储与编译期内置
预设不是运行时从网站下载的,而是随 Starship 二进制一起分发的。从源码结构看,完整链路如下:
- 预设源文件统一存放在 docs/public/presets/toml(共 12 个
.toml),例如 pure-preset.toml 以"$schema" = 'https://starship.rs/config-schema.json'开头,确保在支持 schema 的编辑器中获得补全与校验(schema 本身在仓库 docs/public/config-schema.json); - 编译期内置:在 src/lib.rs 通过
shadow!(shadow)生成元数据模块;src/print.rs 中的Preset枚举即从shadow::get_preset_list()取得可用预设名,CLI 输入的名称与shadow::get_preset_content()返回的内容一一对应; - 写出逻辑:
print::preset_command(src/print.rs)要么把内容直接写进 stdout,要么通过原子写文件函数写进-o指定的路径(失败会打印错误并退出); - 行为有测试兜底:src/print.rs 中的单元测试验证了"预设列表非空、每个预设调用不 panic、
-o写出的文件内容与 nerd-font-symbols.toml 完全一致、-f可覆盖已存在文件"。
这解释了为什么 docs/public/presets/toml/ 才是预设内容的权威真源:文档页里的代码块、CLI 打印的内容,本质上都来自这些 TOML。修改预设的唯一方式是向该目录与文档提交 PR,由上游评审合并后随版本发布。
十二个社区预设逐一解读
下表先给出全貌(CLI 名称 = TOML 文件名,注意与文档页名不完全一致):
| 预设 | CLI 名称(即 starship preset 参数) |
一句话定位 | TOML 源文件 |
|---|---|---|---|
| Nerd Font Symbols | nerd-font-symbols |
全部模块改用 Nerd Font 图标 | nerd-font-symbols.toml |
| No Nerd Fonts | no-nerd-font |
仅用 emoji 与 powerline 符号,无需 Nerd Font | no-nerd-font.toml |
| Bracketed Segments | bracketed-segments |
模块段改用括号包裹,替代 "via"/"on" 等措辞 | bracketed-segments.toml |
| Plain Text Symbols | plain-text-symbols |
图标全部改为纯文本,适合无 Unicode 环境 | plain-text-symbols.toml |
| No Runtime Versions | no-runtime-versions |
隐藏语言运行时版本,适合容器/虚拟化环境 | no-runtime-versions.toml |
| No Empty Icons | no-empty-icons |
工具集未探测到时不再显示图标 | no-empty-icons.toml |
| Pure Prompt | pure-preset |
模仿 Pure 的外观与行为 | pure-preset.toml |
| Pastel Powerline | pastel-powerline |
借鉴 M365Princess 主题;演示路径替换 | pastel-powerline.toml |
| Tokyo Night | tokyo-night |
借鉴 tokyo-night 配色 | tokyo-night.toml |
| Gruvbox Rainbow | gruvbox-rainbow |
深受 Pastel Powerline 与 Tokyo Night 启发 | gruvbox-rainbow.toml |
| Jetpack | jetpack |
受 geometry 与 spaceship 启发的伪极简风格 | jetpack.toml |
| Catppuccin Powerline | catppuccin-powerline |
Gruvbox Rainbow 换上 Catppuccin 调色板 | catppuccin-powerline.toml |
下面是三张有代表性的效果截图(完整截图集在 docs/public/presets/img,每个预设的官方详情页也都嵌有对应截图):
1. Nerd Font Symbols:让每个模块都使用 Nerd Font 图标
该预设(德语说明 / 英文说明)会把每个模块的符号改成 Nerd Font 图标,呈现最"满配"的图标观感。
前置条件(Prerequisites):终端需安装并启用一款 Nerd Font 字体,官方示例使用的是 Fira Code Nerd Font;安装后在终端字体设置中选择它即可。
starship preset nerd-font-symbols -o ~/.config/starship.toml
若图标出现方块或错位,通常说明终端字体尚未切换为 Nerd Font,或终端模拟器未开启字体连字。
2. No Nerd Fonts:没有 Nerd Font 也能完整显示
该预设(德语说明 / 英文说明)将多个模块的符号限制为 emoji 与 powerline 符号集,即使未安装 Nerd Font,所有模块符号也可正常渲染。德语版与英文版索引均特别标注了一条提示:按官方文档说明,该预设将在 Starship 未来某个版本中成为默认预设。对于不愿折腾字体、或远程服务器/受限环境用户,这是最省心的选择。
starship preset no-nerd-font -o ~/.config/starship.toml
3. Bracketed Segments:用括号重新组织分段措辞
该预设(德语说明 / 英文说明)会重写所有内置模块的 format,让每个模块段以方括号等括号形式呈现,取代 Starship 默认的 "via""on" 之类的连接措辞,视觉上更紧凑、更像"分段清单"。
starship preset bracketed-segments -o ~/.config/starship.toml
它演示的正是模块 format 的灵活之处——你可以通过重排变量与文本来彻底改变模块的表述习惯(模块语法见 文档 format 说明)。
4. Plain Text Symbols:纯文本图标
该预设(德语说明 / 英文说明)把每个模块的符号改为可打印的纯文本(如 ->、ASCII 标记),适合无法显示 Unicode/特殊字形的终端、串口或 CI 日志环境。
starship preset plain-text-symbols -o ~/.config/starship.toml
对应源文件为 plain-text-symbols.toml,注意 CLI 名称与文档页名(plain-text)不同。
5. No Runtime Versions:隐藏语言运行时版本
该预设(德语说明 / 英文说明)把各语言模块的 format 中版本变量去掉,只显示"检测到该语言/工具"而不显示版本号。索引特别点出适用人群:经常在容器或虚拟化环境工作的人——例如镜像内默认工具链版本各异、版本号信息噪声大且容易误导。
以源文件 no-runtime-versions.toml 为例,大量语言模块的 format 被统一改写,例如:
[bun]
format = "via $symbol"
[c]
format = "via $symbol($name)"
[dotnet]
format = "$symbol(🎯 $tfm )"
即保留了 $symbol 与必要的次级变量,仅省略 ($version),从而达成"隐藏版本"的效果。应用命令:
starship preset no-runtime-versions -o ~/.config/starship.toml
6. No Empty Icons:工具缺失时不显示"空图标"
该预设(德语说明 / 英文说明)针对"工具集未探测到"的场景:正常情况下部分自定义模块/脚本在找不到对应工具时仍可能渲染符号,本预设通过改写这些模块的 symbol/format 让找不到工具时完全不显示图标,避免出现孤零零的悬空符号。配置来自 no-empty-icons.toml。
starship preset no-empty-icons -o ~/.config/starship.toml
7. Pure Prompt:致敬经典的 Pure
该预设(德语说明 / 英文说明)模仿 Pure 的外观与行为——极简、只有必要信息:用户名/主机、目录、Git 状态、命令耗时、换行与 prompt 符。对应源文件 pure-preset.toml 展示了不少值得学习的写法:
format = """
$username\
$hostname\
$directory\
$git_branch\
$git_state\
$git_status\
$cmd_duration\
$line_break\
$python\
$character"""
[character]
success_symbol = "❯"
error_symbol = "❯"
vimcmd_symbol = "❮"
[cmd_duration]
format = "$duration "
style = "yellow"
注意其 Git 状态区把各类改动标记(conflicted/untracked/modified/staged/renamed/deleted)的符号设为不可见占位,只以括号样式表达"有改动",这正是 Pure 式克制的体现。应用:
starship preset pure-preset -o ~/.config/starship.toml
8. Pastel Powerline:粉彩渐变 + 路径替换演示
该预设(德语说明 / 英文说明)灵感来自 M365Princess 主题,采用粉彩色调与 Powerline 风格分段;同时它还是展示 Starship 路径替换(path substitution)机制的最佳示例。源码 pastel-powerline.toml 中可以看到 directory 模块使用自定义替换规则把家目录/常见路径压缩成更短的别名。
starship preset pastel-powerline -o ~/.config/starship.toml
路径替换的具体配置项可结合 docs/config/README.md 中 directory 模块的说明进一步学习。
9. Tokyo Night:东京夜景配色
该预设(德语说明 / 英文说明)借鉴 Tokyo Night 配色主题,把深蓝、霓虹紫/青的夜间色调带入 Powerline 风格提示符。效果截图即前文图 2。源文件为 tokyo-night.toml。
starship preset tokyo-night -o ~/.config/starship.toml
10. Gruvbox Rainbow:彩虹渐变 + 复古配色
该预设(德语说明 / 英文说明)深受 Pastel Powerline 与 Tokyo Night 双重影响:吸收了两者的分段布局思想,配以 Gruvbox 复古暖色调,并让各段颜色呈彩虹渐变。对应 TOML 为 gruvbox-rainbow.toml。
starship preset gruvbox-rainbow -o ~/.config/starship.toml
11. Jetpack:伪极简的"发射台"
该预设(德语说明 / 英文说明)自称"伪极简(pseudo-minimalist)",借鉴了 geometry 与 spaceship 两款知名提示符的编排:信息不算少,但通过紧凑排布与图标化保持清爽。对应 TOML 为 jetpack.toml。
starship preset jetpack -o ~/.config/starship.toml
12. Catppuccin Powerline:当 Gruvbox Rainbow 换上 Catppuccin
该预设(德语说明 / 英文说明)是对 Gruvbox Rainbow 的最小改动版本:保留其 Powerline 分段与 rainbow 式排版,仅把配色整体替换为 Catppuccin 调色板的柔和粉彩系。对应 TOML 为 catppuccin-powerline.toml。
starship preset catppuccin-powerline -o ~/.config/starship.toml
如何选、如何改造、如何回归默认
怎么选:不想折腾字体优先看 no-nerd-font / plain-text-symbols;追求颜值可从 tokyo-night、gruvbox-rainbow、pastel-powerline、catppuccin-powerline 里挑色系;要极简看 pure-preset 与 jetpack;在容器/CI 里看 no-runtime-versions 与 no-empty-icons;想学习模块 format 改写技巧则研读 bracketed-segments。
改造与回归默认:预设是"起始配置"而非枷锁。写入后可继续编辑 ~/.config/starship.toml 追加你的模块或覆盖颜色。想彻底还原默认外观,删除/备份该配置文件即可——Starship 无配置文件时使用内置默认提示符。对更深度的自定义(如 format 语法、条件渲染、目录截断、自定义模块),可继续阅读:
- 官方预设目录(英文版):docs/presets/README.md
- 德语预设目录(即本文依据):docs/de-DE/presets/README.md
- 完整配置参考:docs/config/README.md
- 进阶配置指南:docs/advanced-config/README.md
小结
Presets 是 Starship 生态中"零成本换肤 + 学习样板"的入口:本文从德语版索引 docs/de-DE/presets/README.md 出发,完整介绍了其收录的 12 个社区预设(Nerd Font Symbols、No Nerd Fonts、Bracketed Segments、Plain Text Symbols、No Runtime Versions、No Empty Icons、Pure Prompt、Pastel Powerline、Tokyo Night、Gruvbox Rainbow、Jetpack、Catppuccin Powerline),并确认它们的 TOML 真源位于 docs/public/presets/toml、随二进制发布、由 starship preset 子命令(见 src/print.rs)读取和写出。现在你既可以直接 starship preset <名称> -o ~/.config/starship.toml 一键换装,也可以打开对应 TOML 逐段学习乃至提交属于你自己的预设。
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
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python07
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00


