首页
/ Starship 预设(Presets)完全指南:认识 12 个社区配置模板与 `starship preset` 命令的用法

Starship 预设(Presets)完全指南:认识 12 个社区配置模板与 `starship preset` 命令的用法

2026-09-07 12:16:01作者:何将鹤

Starship 是一款用 Rust 编写、以"极简、闪电般快速、无限可定制"著称的命令行提示符工具。所谓 预设(Preset),是社区成员预先编写好、可以直接套用的整份 starship.toml 配置方案——从替换符号字体、隐藏运行时版本,到完整复刻 Powerline 主题配色,都可以一键应用。本篇文章以官方文档的 预设总览(对应印尼语版本见 docs/id-ID/presets/README.md)为骨架,结合仓库内的源码与真实 TOML 配置,完整介绍 12 个官方收录的社区预设,并讲解 starship preset 内置命令的底层实现与用法。读完本文,你将能够按需为任何 shell 环境选择、安装、微调甚至贡献一套 Starship 预设。

Bracketed Segments 预设的实际运行效果,展示所有模块段以方括号形式输出

什么是 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 默认的 viaon 等描述性连接词(页面开头配图即为其实际效果)。从这份约 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 提示符)

该预设模仿 zsh 社区知名极简提示符 Pure 的观感与行为,采用极简、清爽的单行布局,适合偏爱"只显示必要信息"哲学的用户。它证明了 Starship 的 format 与模块配置足以复刻其他优秀提示符的交互体验。

三、视觉主题类预设(Powerline 风格配色)

这一类是视觉效果最抢眼的一组,普遍使用 Powerline 风格的倾斜/连接箭头字符(如 )与逐段渐变背景色,形成连续的分段配色。

Tokyo Night 预设的终端效果,展示 Powerline 风格分段配色与模块排布

8. Pastel Powerline

灵感来自 oh-my-posh 的 M365Princess 主题,整体使用柔和的"粉彩"配色。官方文档还特别指出它同时演示了 Starship 的目录替换(path substitution)机制——即把常见目录名在提示符中替换为带颜色的图标文字,相关配置语法可参见 directory 模块说明。想学习如何把某个目录显示成图标,这份预设是最直观的范例。

9. Tokyo Night

配色灵感来自广受欢迎的 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]DocumentsDownloadsMusicPictures 等目录名映射为图标字符,并为 git_branchnodejsrust 等模块统一指定符号与背景色。若需要"目录替换"语法,可对照 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

一个"伪极简(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 这类高级语法后,你完全可以先套用预设、再手工微调,最终形成属于自己的一站式终端体验。

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

项目优选

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