Starship Pure Preset 配置指南:用一行命令复刻 Pure 极简提示符
2026/9/10 7:50:54 网站建设 项目流程

Starship Pure Preset 配置指南:用一行命令复刻 Pure 极简提示符

【免费下载链接】starship☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship

导读

Pure Preset 是 Starship 官方预设集合中专门复刻 Pure(一款经典的 zsh 极简提示符)外观与行为的配置方案。它通过一段精简的 TOML 配置,将 Starship 默认的多行复杂提示符收敛为"用户名 + 路径 + Git 状态 + 命令耗时 + 单行输入符"的极简结构,同时完整保留 Starship 的分段渲染与主题能力。读完本文,你将掌握 Pure Preset 的安装、写入、覆盖与校验方法,理解其每一个配置项背后的模块机制,并能基于它自由定制属于自己的极简提示符。

什么是 Pure Preset

Pure 是社区中广为人知的 zsh 极简提示符,其设计哲学是"少即是多":不展示冗余装饰,只保留执行命令所需的最少信息。Starship 的 Pure Preset 用纯 TOML 配置在 Starship 引擎上还原了这一风格——无需安装任何外部插件,只要套用预设即可获得相同的极简观感。

从 docs/presets/README.md 可以看到,Pure Prompt 预设的定位是"模拟 Pure 的外观与行为"(This preset emulates the look and behavior of Pure),它是 Starship 社区预设集合(Nerd Font Symbols、No Nerd Fonts、Bracketed Segments、Tokyo Night 等)中的一员。预设本质上是预先编写好的starship.toml配置片段,由社区提交维护,用户可通过官方starship preset命令一键获取。

安装 Pure Preset

原文档给出的核心安装命令只有一行:

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

这条命令的含义是:将内置的pure-preset配置写入~/.config/starship.toml-o--output选项,指定输出文件路径)。写入成功后,重新加载 shell 即可看到效果(例如执行exec $SHELL或重启终端)。

需要说明的几点:

  • 覆盖行为:如果~/.config/starship.toml已存在,直接运行上述命令会因目标文件存在而报错。此时需要追加-f/--force参数强制覆盖:

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

    这一点与 src/main.rs 中定义的 CLI 结构一致:--force选项明确标注为requires = "output",即只有配合-o使用时才合法。

  • 查看与输出:不加-o时,预设内容会直接打印到 stdout;配合--list可以列出所有可用预设名称:

    starship preset --list starship preset pure-preset
  • 离线获取:本文档对应的原始 TOML 也以文件形式存放在仓库中:docs/public/presets/toml/pure-preset.toml,可以手动查看或下载后自行放置到配置路径。

从源码看,preset命令的完整参数为:starship preset <NAME> [-o <FILE>] [-f] [--list]。其中预设名称通过ValueEnum枚举校验,--list-o互相冲突(见 src/main.rs),实现细节位于 src/print.rs 的preset_command函数:它通过shadow::get_preset_content读取随二进制打包的预设内容,再由write_file_atomic原子写入目标文件;而 src/print.rs 中的单元测试则验证了"预设列表非空""各预设可正常输出""输出到文件与仓库源文件内容完全一致"等行为。

配置逐项解读

pure-preset.toml的核心是一个自定义的顶层format,外加对若干模块的精简覆写。下面逐段拆解。

顶层 format:极简的渲染顺序

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

这段多行字符串定义了提示符从左到右的渲染顺序:

  • $username/$hostname:用户名与主机名(配合各自的format控制显示细节);
  • $directory:当前目录路径;
  • $git_branch/$git_state/$git_status:Git 分支、Git 操作状态、文件变更状态;
  • $cmd_duration:上一条命令的耗时;
  • $line_break:换行,将输入行与信息行分开;
  • $python:Python 虚拟环境;
  • $character:输入提示符符号。

每行末尾的反斜杠\是 TOML 多行字符串的续行符,在渲染层面则让各个模块紧挨排列,不插入多余空格。与原文档提供的 TOML 完全一致的是,这个 format 只保留了 9 个模块——Starship 默认格式中的$package$rust$nodejs等大量运行时模块都被排除,这正是"极简"的根源。注意该预设还额外引入了$jj_bookmark模块(见下),但顶层 format 未将其显式列出。

character:极简的核心视觉

[character] success_symbol = "❯" error_symbol = "❯" vimcmd_symbol = "❮"
  • success_symbol:上一条命令成功退出时显示的符号,紫色
  • error_symbol:上一条命令失败时显示的符号,红色
  • vimcmd_symbol:进入 vim 命令模式(shell 处于 vi 模式)时显示的符号,绿色

这是 Pure 最标志性的"单字符提示符"效果:命令成功与否通过颜色而非文字传达。方括号内为符号,圆括号内为颜色。

directory:蓝色路径

[directory] style = "blue"

将目录路径统一渲染为蓝色。Starship 的directory模块还支持truncation_length(截断长度)、truncation_symbol(截断符号,默认)等参数,这里未覆盖即使用默认值。

git_branch / git_status / git_state:Git 状态三件套

[git_branch] format = "$branch" style = "bright-black" [git_status] format = "[(*$conflicted$untracked$modified$staged$renamed$deleted) ($ahead_behind$stashed)]($style)" style = "cyan" conflicted = "​" untracked = "​" modified = "​" staged = "​" renamed = "​" deleted = "​" stashed = "≡" [git_state] format = '\($state( $progress_current/$progress_total)\) ' style = "bright-black"
  • git_branch:只显示分支名$branch,用亮黑色(bright-black)渲染,不显示默认的on字样与图标;
  • git_status:将冲突、未跟踪、已修改、已暂存、已重命名、已删除等符号全部设为"零宽空格"(""即空字符串),从而把 Git 状态信息收敛进一个圆括号内:(*...)表示有未处理变更,(≡)表示有 stash;$ahead_behind显示与上游的领先/落后;整体用青色(cyan),括号内数字218是 ANSI 256 色中的特定青色;
  • git_state:仅在 rebase/merge 等操作进行中显示(状态 进度),例如(REBASING 3/10),同样用亮黑色并包裹在圆括号中。

这种"零宽字符 + 单括号聚合"的手法正是 Pure 极简风格的实现关键:正常工作时几乎看不到 Git 信息,只有存在变更时才以紧凑形式出现。

cmd_duration:命令耗时

[cmd_duration] format = "$duration " style = "yellow"

在每次命令执行后显示耗时(黄色),例如3s。默认配置下 Starship 的cmd_duration仅在命令耗时超过min_time(默认 2000ms)时才渲染,这一行为在此预设中同样生效。

jj_bookmark:Jujutsu 书签支持

[jj_bookmark] format = "$bookmark(@$remote)$diverged( \\(+$overflow_count others\\))" style = "bright-black"

这是原 TOML 中隐藏的"彩蛋"模块。jj_bookmark用于在 Jujutsu(jj)仓库中显示当前书签。根据 docs/config/README.md 的说明,该模块会在当前目录处于 Jujutsu 仓库时读取@ | @-中的书签并优先展示@的(过滤后)书签。此处的 format 展示了:

  • $bookmark:书签名称;
  • @$remote:书签所属 remote;
  • $diverged:存在发散(diverged)书签时的符号;
  • $overflow_count:超出显示上限时其余书签的数量(+N others)。

同样以bright-black低调渲染,避免破坏极简氛围。

python:虚拟环境标识

[python] format = "$virtualenv " style = "bright-black" detect_extensions = [] detect_files = []
  • format:只显示虚拟环境名$virtualenv(亮黑色),不显示 Python 版本号;
  • detect_extensions = []detect_files = []:清空模块的默认触发条件。根据 docs/config/README.md 关于检测机制的说明,detect_extensions匹配文件扩展名、detect_files匹配文件名(两者均支持以!开头的负向匹配),这里将两者置空意味着模块不会因为目录中出现.py文件或requirements.txt等而自动出现,只在虚拟环境激活时显示。

应用与自定义扩展

手动替换配置

如果不希望覆盖现有配置,可以把pure-preset.toml的内容合并进已有的~/.config/starship.toml,或使用 Starship 的 include 机制引用其他文件。也可以直接复制 docs/public/presets/toml/pure-preset.toml 的内容到你的配置文件中。

基于 Pure 继续定制

Pure Preset 只是一个起点,你可以基于它继续叠加 Starship 的模块与主题能力:

  • 在顶层format中追加$git_commit$rust$nodejs等模块,按需恢复运行时信息;
  • 修改success_symbol的符号与颜色(如);
  • directory增加truncation_length = 3限制路径显示深度;
  • 打开$fill模块将提示符分成两段;
  • 参考 docs/advanced-config/README.md 中关于主题样式的进阶说明,为各模块更换配色。

每一次修改只需编辑~/.config/starship.toml并重新加载 shell 即可生效,无需重编译。

小结

Pure Preset 通过一段不足 60 行的 TOML,就完整复刻了 Pure 提示符的极简美学:单字符彩色输入符、蓝色路径、聚合式的 Git 状态、隐藏的 Jujutsu 书签,以及仅在有 Python 虚拟环境时出现的标识。它同时证明了 Starship"无限可定制"的设计哲学——同一套渲染引擎,通过配置即可呈现完全不同的提示符风格。安装命令starship preset pure-preset -o ~/.config/starship.toml已为你准备好,剩下的就是加载你的新提示符,开始体验。

相关资源:

  • 预设总览
  • Pure Preset 原文档
  • 预设 TOML 源文件
  • Starship 配置参考
  • 进阶配置指南
  • preset 命令 CLI 定义
  • preset 命令实现与测试

【免费下载链接】starship☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询