首页
/ Starship 社区预设(Presets)完全指南:从 Nerd Font 符号到 Powerline 主题的安装、挑选与源码机制

Starship 社区预设(Presets)完全指南:从 Nerd Font 符号到 Powerline 主题的安装、挑选与源码机制

2026-09-08 17:50:57作者:宣利权Counsellor

本文整理自 Starship 文档站点的预设集合页(英文版韩文版),系统梳理官方收录的 12 个社区预设、每条预设的安装命令与前置依赖,并结合仓库中的 CLI 定义与 TOML 资源说明它们背后的实现原理。读完本文,你将能熟练使用 starship preset 一键换装、判断哪些预设需要 Nerd Font 或右侧提示符支持,并在预设基础上按需二次定制出自己的提示符方案。

Starship 预设是什么

Starship 是一个用 Rust 编写、号称"极简、极快、可无限定制"的跨 shell 提示符(当前仓库根目录的 README.md 即以此作为项目定位)。它默认开箱即用,但为了让不同审美与需求的用户能"一键换装",官方在文档中维护了一份社区预设(Presets)集合

所谓预设,本质上是一份完整的 Starship TOML 配置文件:它通过改写各模块(module)的 formatsymbolstyle,甚至顶层 format 与调色板 palette,来整体改变提示符的外观。每个预设都在 docs/presets/(及各语言的翻译目录,如韩文版 docs/ko-KR/presets/)下有一个独立页面,配有效果截图、前置条件与一键安装命令,同时把完整配置发布在 docs/public/presets/toml/ 目录中供直接下载。

集合页本身是一个"陈列柜":你点击某个预设卡片即可看到它的效果图、使用方法和配置全文。若你有想分享的自定义配置,官方欢迎通过修改集合页并提交 Pull Request 的方式收录新预设。

使用预设:starship preset 命令详解

一键写入配置文件

每个预设页都提供同一条形式的命令,例如安装 Nerd Font Symbols 预设:

starship preset nerd-font-symbols -o ~/.config/starship.toml

参数含义如下:

参数 说明
preset Starship CLI 的子命令,用于把内置预设打印出来或写入文件
<preset-name> 预设名,即命令的必填位置参数
-o, --output <FILE> 将预设配置输出到指定文件(默认输出到 stdout)
-f, --force 当目标输出文件已存在时强制覆盖(需配合 --output 使用)
-l, --list 列出所有可用预设名称,不执行输出

以上命令行选项的定义可在 src/main.rs 中看到:Preset 子命令由 clap 解析,name 是一个 value_enum(映射到 print::Preset 枚举),outputforce 相互配合用于把配置落盘,list 用于枚举全部预设;实际执行逻辑则分发到 src/print.rspreset_command

因此常见用法还有几种变体:

# 仅把预设内容打印到终端,先看看长什么样
starship preset tokyo-night

# 列出仓库内置的全部预设名
starship preset --list

# 已有配置文件时,用 -f 强制覆盖
starship preset pastel-powerline -o ~/.config/starship.toml -f

提示:starship preset 只是生成配置文件,并不会即时刷新当前 shell 的提示符。覆盖 ~/.config/starship.toml 后,请重开终端或执行 exec $SHELL(视 shell 而定)让新配置生效。

手动下载安装

如果不方便执行命令,每个预设页还提供对应 TOML 文件的直接下载链接。在仓库中,这些文件集中存放于 docs/public/presets/toml/,共有 bracketed-segments.tomlcatppuccin-powerline.tomlgruvbox-rainbow.tomljetpack.tomlnerd-font-symbols.tomlno-empty-icons.tomlno-nerd-font.tomlno-runtime-versions.tomlpastel-powerline.tomlplain-text-symbols.tomlpure-preset.tomltokyo-night.toml 共 12 份。这些文件的头部通常带有:

"$schema" = 'https://starship.rs/config-schema.json'

即声明其遵循 config-schema.json(仓库根下 docs/public/ 亦保留了这份 schema),许多编辑器可据此获得自动补全与校验。下载后将其内容覆盖写入 ~/.config/starship.toml 即可达到与命令安装相同的效果。

内置预设清单

通过 starship preset --list 可以拿到与仓库一致的完整名单,共 12 个:

nerd-font-symbolsno-nerd-fontbracketed-segmentsplain-text-symbolsno-runtime-versionsno-empty-iconspure-presetpastel-powerlinetokyo-nightgruvbox-rainbowjetpackcatppuccin-powerline

预设速查与挑选总览

预设 设计目标 官方声明的关键前置条件 主要影响面
Nerd Font Symbols 让各模块符号统一为 Nerd Font 字形 终端需安装并启用 Nerd Font(示例为 Fira Code Nerd Font) 全局各模块的 symbol
No Nerd Fonts 提示符完全不使用 Nerd Font 字形 各模块 symbol,限制为 emoji 与 powerline 字符集
Bracketed Segments 所有内置模块用方括号包裹段落,替代 "via"/"on" 等措辞 所有内置模块的 format
Plain Text Symbols 符号全部改为纯文本 无(适合无法使用 Unicode 的环境) 各模块 symbol
No Runtime Versions 隐藏语言运行时版本号 无(推荐容器/虚拟化环境使用) 语言类模块的 format(移除 $version
No Empty Icons 无法探测到工具集版本时连图标也不显示 语言/工具类模块的 format 括号化
Pure Prompt 复刻 Pure 的外观与交互行为 顶层 formatcharactergit_*directory
Pastel Powerline 仿 M365Princess 的柔和 Powerline 风格 终端需启用 Nerd Font(示例为 Caskaydia Cove Nerd Font) 顶层 format、调色板与路径替换
Tokyo Night 以 tokyo-night VSCode 主题为灵感 终端需启用 Nerd Font 顶层 format、调色板
Gruvbox Rainbow 融合 Pastel Powerline 与 Tokyo Night 的彩虹分段 终端需启用 Nerd Font 顶层 format、调色板
Jetpack 灵感来自 geometry/spaceship 的伪极简预设 需 shell 支持 right-prompt;推荐 Jetbrains Mono;直接使用终端配色主题 顶层 format、右侧提示符、符号
Catppuccin Powerline 用 Catppuccin 调色板轻改 Gruvbox Rainbow 终端需启用 Nerd Font 顶层 formatpalette(Mocha/Frappé/Macchiato/Latte)

符号与排版类预设

这一类预设不追求色彩主题,而是聚焦"字形"与"排版",适合对终端字体或屏幕空间有特定要求的场景。

Nerd Font Symbols(Nerd Font 符号)

各模块默认符号可能来自不同字体集或为纯文本,本预设将每个模块的图标统一替换为 Nerd Font 字形,让提示符具备更完整的图标观感(具体每个模块的符号改动可见 docs/presets/nerd-font.md 内嵌的完整 TOML,即 nerd-font-symbols.toml)。

前置条件是在终端里安装并启用一款 Nerd Font(示例图中使用的是 Fira Code Nerd Font)。安装命令:

starship preset nerd-font-symbols -o ~/.config/starship.toml

No Nerd Fonts(完全不用 Nerd Font)

如果嫌安装 Nerd Font 麻烦,或希望提示符在未安装 Nerd Font 的机器上(例如远程服务器)也不会出现缺字方框,可以选用本预设。它把各模块符号收敛到 emoji 与 powerline 字符集之内,因此在没有 Nerd Font 的情况下也能正确显示全部模块符号(no-nerd-font.toml)。文档同时提示:该预设计划在未来的某个 starship 版本中成为默认预设。安装:

starship preset no-nerd-font -o ~/.config/starship.toml

Bracketed Segments(方括号化分段)

Starship 默认在描述模块时使用 "via"、"on"、"with" 等连接词(例如 via  20.11.0)。本预设把所有内置模块的输出改为 [……] 方括号包裹的形态,视觉上更整齐、也更贴近某些传统提示符的审美。以 bracketed-segments.toml 中的片段为例:

[aws]
format = '\[$symbol($profile)($region)($duration)\]'

[buf]
format = '\[$symbol($version)\]'

[bun]
format = '\[$symbol($version)\]'

[c]
format = '\[$symbol($version(-$name))\]'

可以看到做法是对每个模块重写 format:需要加显式转义的方括号文本 \[ \],再用 $style 沿用各模块原有颜色;cmd_duration 这类带前缀符号的模块则写成 '\[⏱ $duration\]'。安装命令:

starship preset bracketed-segments -o ~/.config/starship.toml

Plain Text Symbols(纯文本符号)

若终端环境无法可靠显示 Unicode(例如某些老旧终端或字符集受限环境),本预设把每个模块的符号替换为可读的纯英文文本标签(如 ->λ 之外的 ASCII 风格标签,具体替换见 plain-text-symbols.toml),让提示符在纯 ASCII 条件下依然信息完整。安装:

starship preset plain-text-symbols -o ~/.config/starship.toml

信息密度调整类预设

No Runtime Versions(隐藏运行时版本)

如果你经常出入容器、虚拟机等隔离环境,本预设正合适:它把 bun、c、cobol、dart、deno、dotnet、elixir、elm、golang、python、rust 等大量语言模块的 format$version 变量删去,只保留符号与名字。以 no-runtime-versions.toml 为例:

[bun]
format = "via $symbol"

[c]
format = "via $symbol($name)"

[dotnet]
format = "$symbol(🎯 $tfm )"

既保留了"当前目录存在哪种工具链"的提示,又避免了"在容器里看到与宿主机无关的版本号"的噪声。安装:

starship preset no-runtime-versions -o ~/.config/starship.toml

No Empty Icons(探测不到就不显示图标)

默认情况下,部分语言模块只要识别到工具集特征文件(如 package.jsonCargo.toml)就会显示该工具的图标,即使未能进一步解析出版本号。本预设改变这一行为:只有当工具集信息(例如版本)能被真实探测到时,才渲染图标与段落。实现上同样是把相关模块的 format 整体用圆括号括起来作为可选段落,见 no-empty-icons.toml

[bun]
format = '(via $symbol($version ))'

[dart]
format = '(via $symbol($version ))'

[dotnet]
format = '(via $symbol($version )(🎯 $tfm ))'

由于整段被 ( ) 包成"可选"状态,Starship 只有在 $version 等变量实际存在时才渲染整段。安装:

starship preset no-empty-icons -o ~/.config/starship.toml

复刻经典:Pure Prompt

Pure 是 Zsh 生态中极简提示符的代表。本预设在 Starship 里复刻 Pure 的外观与行为:顶部只保留用户名、主机名、目录、Git 状态、命令耗时等必要信息,换行后用一个紫色/红色的 (错误时变红、vim 命令模式变 )作为输入符。其顶层 format 结构与关键段落来自 pure-preset.toml

format = """
$username\
$hostname\
$directory\
$git_branch\
$git_state\
$git_status\
$cmd_duration\
$line_break\
$python\
$character"""

[directory]
style = "blue"

[character]
success_symbol = "❯"
error_symbol = "❯"
vimcmd_symbol = "❮"

[git_status]
format = "[(*$conflicted$untracked$modified$staged$renamed$deleted) ($ahead_behind$stashed)]($style)"
style = "cyan"
stashed = "≡"

注意 git_status 中各冲突状态被设为占位"零宽字符",配合纯色符号实现 Pure 那种"无文字噪音"的极简观感。安装:

starship preset pure-preset -o ~/.config/starship.toml

从配置看,该预设还示范了模块级 format 的写法:$character 里的 success_symbol/error_symbol/vimcmd_symbol 分别对应普通命令、失败命令与 vim 模式(详见 character.rssrc/modules/character.rs 的实现语义)。

Powerline 风格主题类预设

Pastel Powerline

灵感来自 M365Princess 主题,用柔和粉彩色系的 powerline 尖角衔接各段。它的另一个教学价值是演示了 Starship 的路径替换(path substitution)能力,文档据此展示了目录显示时的映射写法(配置全文见 pastel-powerline.toml)。前置条件是终端启用 Nerd Font(示例使用 Caskaydia Cove Nerd Font)。安装:

starship preset pastel-powerline -o ~/.config/starship.toml

Tokyo Night

灵感来自 tokyo-night VSCode 主题的深蓝夜色配色,输出深色背景下高对比的蓝紫色系提示符(配置见 tokyo-night.toml)。前置条件:终端启用 Nerd Font。安装:

starship preset tokyo-night -o ~/.config/starship.toml

Gruvbox Rainbow

它在设计上强烈参考了 Pastel Powerline 与 Tokyo Night,把二者的彩虹分段思路移植到 Gruvbox 复古暖色系上,形成一条自左向右、按模块分色的"彩虹"提示符(配置见 gruvbox-rainbow.toml)。前置条件:终端启用 Nerd Font。安装:

starship preset gruvbox-rainbow -o ~/.config/starship.toml

Jetpack

灵感来自 geometryspaceship 提示符的**伪极简(pseudo minimalist)**预设。它与多数主题类预设不同:不使用自定义调色板,而是直接继承终端自身的配色主题,因此能无缝融入你现有的配色方案。它有两条明确前提:

  • shell 需支持 right-prompt(右侧提示符)(Starship 的右提示符相关说明可参考 advanced-config,仓库对应文档为 docs/advanced-config/README.md);
  • 推荐搭配 Jetbrains Mono 字体获得最佳观感。

安装:

starship preset jetpack -o ~/.config/starship.toml

由于 Jetpack 同时使用右侧提示符,安装后若提示符右侧没有内容,请检查所用 shell 的初始化脚本是否已启用右提示符渲染。

Catppuccin Powerline

可以看作是 Gruvbox Rainbow 的"换皮"最小化改版:用 Catppuccin 主题调色板替换原有配色,结构上沿用 Gruvbox Rainbow 的分段骨架。它以一段自左向右的 powerline 尖角串联 osusernamedirectorygit_branch、语言栈、condatimecmd_duration 等模块,例如 catppuccin-powerline.toml 顶层所示:

format = """
\
$os\
$username\
\
$directory\
\
$git_branch\
$git_status\
\
...
 \
$cmd_duration\
$line_break\
$character"""

palette = 'catppuccin_mocha'

它默认使用 Catppuccin 的 Mocha 口味(flavor)。若想换成其他口味,只需修改配置文件中的 palette 值,可选值为:

  • catppuccin_mocha
  • catppuccin_frappe
  • catppuccin_macchiato
  • catppuccin_latte

例如把最后一行改为 palette = 'catppuccin_latte' 即可得到适合浅色终端的变体。前置条件:终端启用 Nerd Font。安装:

starship preset catppuccin-powerline -o ~/.config/starship.toml

从源码看预设机制

在 Starship 中,"预设"不是独立运行的程序,而是由 CLI 子命令把编译进二进制的 TOML 文本按需输出:

  • 命令与参数定义在 src/main.rsCommands::Preset),要求预设名、可选输出路径 -o、强制覆盖 -f、列举 -l
  • 输出与枚举逻辑在 src/print.rspreset_command),其 Preset 枚举的每个变体对应当前仓库 docs/public/presets/toml/ 下的同名配置资源;
  • 因此 starship preset <name> 生成的内容与 docs 页面内嵌展示的 TOML(形如 <<< @/public/presets/toml/xxx.toml 的引用块)完全一致,文档与二进制保持同源,避免了"文档示例与真实配置漂移"的问题。

这也解释了为什么安装预设后一切皆可继续微调:预设输出的就是普通 starship.toml 语法,之后你仍然可以用 [module] 覆盖个别段落,或参考 configadvanced-config 的说明自行增删模块。建议在应用预设前先备份原配置文件(例如 cp ~/.config/starship.toml ~/.config/starship.toml.bak),不满意时可随时还原。

参与社区:分享你自己的预设

预设文化是 Starship 社区协作的一部分。集合页(docs/presets/README.md)在开篇即说明:如果你有想分享的预设,请修改该集合页并提交 Pull Request。一个完整的预设投稿通常需要同时准备:

  1. 面向读者讲解用法与前置条件的独立 Markdown 页(参考 docs/presets/pure-preset.md 的结构);
  2. 与该页一一对应的完整 TOML 资源(放至 docs/public/presets/toml/);
  3. 效果截图资源(放至 docs/public/presets/img/),供集合页陈列;
  4. 在集合页追加一条带截图入口的条目,其余语言目录(如 docs/ko-KR/presets/docs/zh-CN/presets/)随之同步。

总而言之,Starship 预设把"折腾提示符"从逐行手写配置变成了"浏览陈列柜 → 一键安装 → 按需微调"的轻松流程。无论你偏好 Nerd Font 图标、极简 Pure、还是 Powerline 彩虹主题,都可以先从 docs/presets/README.md 的 12 个预设中挑一个开始,再借助本文整理的源码路径深入理解它到底改了哪些配置,最终定制出属于自己的专属提示符。

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

项目优选

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