首页
/ Starship 社区预设(Presets)索引全解析:从「Voreinstellungen」清单到一键应用现成主题

Starship 社区预设(Presets)索引全解析:从「Voreinstellungen」清单到一键应用现成主题

2026-09-07 16:21:23作者:裴麒琰

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。它本身不贴完整配置,而是做三件事:

  1. 说明预设来源:这是由社区提交(community-submitted)的 Starship 配置预设合集,如果你有想分享的预设,可以通过提交 Pull Request 更新该索引(原文档以 😊 注明这一点);
  2. 给出每个预设的一句话定位(德语),例如 "Nerd Font-Symbole"、"Pure Prompt"、"Pastell Powerline";
  3. 截图引导用户:原文档说明"点击图片即可查看该预设的使用细节(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.rsPreset 子命令中:

参数 作用
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_commandsrc/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,每个预设的官方详情页也都嵌有对应截图):

Nerd Font Symbols 预设的终端效果截图,各模块使用 Nerd Font 图标

Tokyo Night 预设的终端效果截图,使用东京夜景风格配色

Pure Prompt 预设的终端效果截图,极简的 prompt 符与状态区

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-nightgruvbox-rainbowpastel-powerlinecatppuccin-powerline 里挑色系;要极简看 pure-presetjetpack;在容器/CI 里看 no-runtime-versionsno-empty-icons;想学习模块 format 改写技巧则研读 bracketed-segments

改造与回归默认:预设是"起始配置"而非枷锁。写入后可继续编辑 ~/.config/starship.toml 追加你的模块或覆盖颜色。想彻底还原默认外观,删除/备份该配置文件即可——Starship 无配置文件时使用内置默认提示符。对更深度的自定义(如 format 语法、条件渲染、目录截断、自定义模块),可继续阅读:

小结

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 逐段学习乃至提交属于你自己的预设。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.74 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
897
5.81 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
531
595
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
920
1.84 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.63 K
1.02 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.36 K
1.46 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.02 K
518
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
547
389