ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Starship Jetpack 预设深度解析:一份“伪极简”双行提示符的完整配置实战

2026/9/8 17:34:01 拓冰建站 浏览量
Starship Jetpack 预设深度解析:一份“伪极简”双行提示符的完整配置实战 Starship Jetpack 预设深度解析一份“伪极简”双行提示符的完整配置实战【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starshipJetpack 是 Starship 官方预置预设之一官方定位为 “pseudo minimalist”伪极简它不追求把一切塞进左提示符而是把命令、目录、Git 状态与各种语言工具链的版本信息按「左侧执行上下文 右侧工作区状态」的布局拆到两个提示符里参考了 geometry 与 spaceship 两个提示符项目的设计思路。读完本文你将掌握 Jetpack 预设的安装方式、底层 TOML 结构、每个核心模块的作用以及它是如何做到“不写死配色、完全跟随终端主题”的并学会在此预设基础上做自己的裁剪定制。参考文档fr-FR 版 Jetpack 预设说明 与 英文原版配置全文位于 docs/public/presets/toml/jetpack.toml。Jetpack 是什么伪极简的双区提示符Jetpack 被 Starship 官方收录在 预设列表 中。它的核心设计是主提示符format只保留“轻量”信息环境nix_shell、container、sudo、上一条命令耗时、主机名/IP、当前 shell、任务数量、用户名最后以 character 收尾。右侧提示符right_format承载“重量级”状态Git/Hg/Pijul/Fossil 版本控制信息、当前目录、Docker 上下文、包管理器与几十种语言运行时版本。两条区域之间用一个fill模块撑开让右侧状态始终右对齐视觉上像一条被“推”到右侧的状态栏。在 Starship 源码中左右提示符是分别解析与渲染的src/print.rs 中会依据渲染目标读取format与right_format两个字段构造格式化器参见 src/configs/starship_root.rs 对这两个字段的定义。也就是说Jetpack 的“左简右繁”并非截图效果而是 Starship 原生right_format机制的产物。前置条件右提示符支持与推荐字体原文 docs/fr-FR/presets/jetpack.md 明确给出两点要求shell 必须支持 right prompt。Starship 的右提示符依赖各 shell 自己的右侧区域机制例如 zsh 的RPROMPT、fish 的fish_right_prompt、bash 的 ble.sh 提示符等。你可以在初始化脚本里直接看到这一调用方式比如 zsh 脚本通过starship prompt --right --terminal-width$COLUMNS ...渲染右提示符src/init/starship.zshfish 则有专门的fish_right_prompt函数src/init/starship.fish。更完整的启用说明见 右提示符高级配置。推荐使用 JetBrains Mono 字体。Jetpack 大量使用了几何符号与特殊字形△、◎、◫、▴▿等尽管它并不强制要求 Nerd Font 字库但为了让这些符号与方括号对齐得更整齐官方推荐 JetBrains Mono。另外值得注意Jetpack没有引入任何自定义调色板palette。全文配色只使用blue、purple、green、red、bright-yellow、dimmed white这类语义颜色名因此实际显示完全取决于你的终端配色主题——这正是“Jetpack uses the terminals color theme”这句话的含义。更换终端主题如从浅色切到深色或换个配色方案Jetpack 会随之整体换色无需改动配置。上图是官方预设截图 docs/public/presets/img/jetpack.png2880×1800左侧为命令输入与执行结果右侧始终显示当前目录、分支、版本控制状态与语言工具链版本随cd切换目录实时刷新。安装与启用一条命令生成配置启用 Jetpack 预设只需要一条命令starship preset jetpack -o ~/.config/starship.toml这里starship preset是 Starship 内建子命令其参数定义见 src/main.rsjetpack是预设名-o/--output指定写入目标文件配合-f/--force可强制覆盖已存在的配置另可用-l/--list列出全部可用预设。实现上预设列表与内容并不是硬编码在源码里的仓库根目录的 build.rs 在编译期扫描docs/public/presets/toml/目录下所有*.toml把每个文件名作为预设名注册、把文件内容内嵌进二进制运行时再由 src/print.rs 的preset_command将其输出到 stdout 或指定文件。这意味jetpack.toml一旦更新重新编译即可让内置预设同步刷新你随时可以starship preset jetpack不带-o把完整配置打印到终端先预览再决定是否落盘starship preset -l可查看当前二进制内置的全部预设名。如果你不想执行命令、希望手动合并也可以直接阅读 docs/public/presets/toml/jetpack.toml 的内容把需要的片段复制进现有starship.toml。配置的完整可校验 JSON Schema 见 docs/public/config-schema.json。说明启用后请务必保持format与right_format两条配置同时存在Jetpack 的布局依赖于两者协同。布局骨架format、fill 与 right_formatJetpack 布局的顶层骨架是整个预设的灵魂我们逐段拆解add_newline true continuation_prompt ▸▹ format ($nix_shell$container$fill$git_metrics\n)$cmd_duration\ $hostname\ $localip\ $shlvl\ $shell\ $env_var\ $jobs\ $sudo\ $username\ $character right_format $singularity\ $kubernetes\ $directory\ $vcsh\ $fossil_branch\ ... $os\ $battery\ $time要点逐条说明add_newline true每次提示符前先换一行给命令留出呼吸空间这也是大多数 Starship 主题的默认值src/configs/starship_root.rs 的默认实现同样为 true。continuation_prompt多行命令续行时的前缀▸▹dimmed white。第一行($nix_shell$container$fill$git_metrics\n)是 Jetpack 最特别的设计nix_shell/container若处于激活环境nix shell、容器内就会显示在最上方fill是一个“填充”模块symbol 被设为单个空格[fill] symbol 其作用是把后续内容顶到该行最右侧git_metrics提交增删统计因此总被渲染在第一行的右端而不挤占主区域括号内的这些模块为“可选组”全部未激活时整行含换行自动消失——docker_context等右侧模块在无上下文时不占位正是依赖这种可选组语义。主行从左到右依次为cmd_duration上一条命令耗时→hostname→localip→shlvl→shell→env_var→jobs→sudo→username→character。可以看到命令执行信息在左环境与身份在右端收束最后以character输入符号结束。right_format中的反斜杠续行多行书写的 TOML 字符串拼接后仍是单一 module 序列渲染顺序严格按文本顺序先是容器/虚拟化/云singularity、kubernetes、docker_context再是目录与版本控制directory、git_branch、git_status…最后是语言工具链nodejs、python、rust…与系统状态os、battery、time。从源码看$all之外的显式 module 序列就是 Starship 的“白名单渲染”模式src/configs/starship_root.rs 中默认format为$all未被写进format/right_format的模块即使探测到上下文也不会输出。Jetpack 正是用这套机制精确控制了信息层级。核心模块配置逐项拆解character状态感知的输入符号[character] format $symbol success_symbol ◎ error_symbol ○ vimcmd_symbol ■ # not supported in zsh vimcmd_replace_one_symbol ◌ vimcmd_replace_symbol □ vimcmd_visual_symbol ▼character是每条命令执行结果的“指示灯”成功显示亮黄色◎上一条命令失败则变为紫色○在支持 vim 模式探测的 shell 中进入 vim 命令模式时符号变为■替换/可视等细分模式也有独立符号配置里注释说明vimcmd_replace_one_symbol等细分状态在 zsh 中不受支持。jetpack 文档正文也要求 shell 具备 keymap 探测能力方能体验这套符号切换。sudo 与 username环境身份的显式化[sudo] format $symbol style bold italic bright-purple symbol ⋈┈ disabled false [username] style_user bright-yellow bold italic style_root purple bold italic format ⭘ $user disabled false show_always falseStarship 默认不显示sudo模块其默认disabled trueJetpack 显式重新开启符号为⋈┈——当检测到凭据已缓存sudo 最近成功执行过时才出现username在 Jetpack 中默认不开启Starship 默认行为是只在 SSH 会话或用户切换时显示因此show_always false普通用户用亮黄粗斜体⭘ user前缀root 用户则显示为紫色。directory以 OS 分隔符为主语的路径风格[directory] home_symbol ⌂ truncation_length 2 truncation_symbol □ read_only ◈ use_os_path_sep true style italic blue format $path$read_only repo_root_style bold blue repo_root_format $before_root_path$repo_root$path$read_only △几个关键选项决定了 Jetpack 目录的观感use_os_path_sep true让路径截断时按操作系统的路径分隔符切分而不是固定/truncation_length 2表示截断后至多保留两级配合truncation_symbol方框符号家目录显示为⌂只读目录追加◈标记当身处 git 仓库时启用repo_root_format仓库根目录以粗体蓝显示并在路径末尾附加△同 git_branch 符号呼应。cmd_duration 与 jobs执行反馈[cmd_duration] format ◄ $duration [jobs] format $symbol$number style white symbol ▶上一条命令耗时超过阈值Jetpack 未改动默认时长阈值仅定制样式时在行首显示◄ 12ms形式的耗时后台存在任务时以蓝色▶加数字提示数量。localip / timeSSH 场景与时钟[localip] ssh_only true format ◯$localipv4 disabled false [time] disabled false format $time time_format %R utc_time_offset local style italic dimmed whitelocalip默认模块在 Starship 中是关闭的Jetpack 开启它但限定ssh_only true——只有通过 SSH 登录时才在左侧显示内网 IPv4 地址避免本机也刷 IPtime默认模块在 Starship 中是关闭的Jetpack 同样显式开启%R为 24 小时制HH:MMutc_time_offset local表示始终按本地时区显示并置于右提示符最末端。battery阈值分档着色的电量显示[battery] format $percentage $symbol full_symbol █ charging_symbol ↑ discharging_symbol ↓ unknown_symbol ░ empty_symbol ▃ [[battery.display]] threshold 20 style italic bold red [[battery.display]] threshold 60 style italic dimmed bright-purple [[battery.display]] threshold 70 style italic dimmed yellowbattery.display列表自上而下匹配低于 20% 红色加粗、20%–60% 之间紫色、60%–70% 之间黄色、高于 70% 使用模块默认样式实现“电量越低越醒目”的分档告警。Git 三件套分支、指标与状态[git_branch] format $branch(:$remote_branch) symbol △ style italic bright-blue truncation_symbol ⋯ truncation_length 11 ignore_branches [main, master] only_attached true [git_metrics] format (▴$added)(▿$deleted) added_style italic dimmed green deleted_style italic dimmed red ignore_submodules true disabled false [git_status] style bold italic bright-blue format (⎪$ahead_behind$staged$modified$untracked$renamed$deleted$conflicted$stashed⎥) conflicted ◪◦ ahead ▴│[${count}│](italic green) behind ▿│[${count}│](italic red) diverged ◇ ▴┤[${ahead_count}│▿┤${behind_count}│](italic bright-magenta) untracked ◌◦ stashed ◃◈ modified ●◦ staged ▪┤[$count│](italic bright-cyan) renamed ◎◦ deleted ✕Git 状态是右侧提示符最核心的一块Jetpack 的风格极有辨识度git_branchignore_branches排除了main/master——在主干分支上不再重复显示分支名only_attached true表示 detached HEAD 状态下不显示分支此时 Git 状态信息会退回到 commit/状态符号来表达。分支名超过 11 个字符以⋯截断。git_metrics统计当前分支相对上游的提交增删行数绿色▴N表示新增、红色▿N表示删除。该模块默认在 Starship 中关闭disabled trueJetpack 显式启用并默认跳过 submodule。它的显示位置在第一行fill之后屏幕最右端。git_status把所有状态符号用⎪...⎥括成一体▪加蓝色数字表示暂存文件数●表示已修改◌表示未跟踪◎表示已重命名✕表示删除◪表示冲突与上游比较时▴/▿分别表达领先/落后及其计数分叉则用菱形◇同时给出两个方向的计数。如果同时使用 Jujutsujj版本控制预设还对jj_bookmark做了与 git_branch 对称的定制同样忽略 main/master、同样 11 字符截断见 TOML 中[jj_bookmark]一节。语言工具链统一为“短标签 版本”的三段式Jetpack 对所有运行时版本模块做了高度统一的排版例如[deno] format deno ∫ $version version_format ${raw} [nodejs] format node ◫ ($version) version_format ${raw} detect_files [package-lock.json, yarn.lock] detect_folders [node_modules] detect_extensions [] [python] format py ${symbol}${version} symbol ⌉⌊ version_format ${raw} style bold bright-yellow [rust] format rs $symbol$version symbol ⊃ version_format ${raw} style bold red这一大批配置的共同点非常明显工具名前缀统一斜体小写短名deno、node、py、rs、rb、go、hs、jl、sw…一眼可知当前目录用什么技术栈版本号一律version_format ${raw}直接显示原始版本字符串不做v前缀剥离或major.minor折叠等任何改写每个语言还配了专属几何符号deno 用∫、node/bun 用◫、python 用⌉⌊、rust 用⊃、ruby 用◆、swift 用◁…nodejs 额外收紧了探测规则只有存在package-lock.json/yarn.lock或node_modules目录时才显示避免在只放了一个.js脚本的目录里盲目刷版本。TOML 后半部分还依次为 dart、elixir含 OTP 版本、elm、golang、haskell、java、julia、nim、swift、conda、pixi、spack 等模块统一了 symbol 与 format并保持了同一种“语言 符号 版本”节奏[package]模块则显示为pkg ◨ 0.1.0用于在没有锁文件场景下补充包版本信息。AWS 模块在预设中被关闭disabled true说明 Jetpack 刻意让云凭据信息保持低调。验证与效果切换到不同项目会看到什么官方截图 docs/public/presets/img/jetpack.png 演示了三个典型场景可以帮助你快速自检配置是否生效进入 git 仓库右侧出现目录 △ 分支名 ⎪⎪▪⎪│1│...⎪⎥一类的组合其中目录为斜体蓝、仓库根目录粗体蓝并带△git_metrics的增删统计出现在第一行最右端。进入带包管理的项目随后出现pkg ◨ 0.1.0、语言运行时版本如py、rs等内容。命令执行失败/成功行首 character 在亮黄◎与紫色○之间切换vim 模式下符号变为■。当以上状态都不存在时相关模块整体消失右提示符只剩目录与 time——这正是“伪极简”的含义极简只在没有上下文时才显现一旦进入真实工程Jetpack 会立刻把该有的状态都递到你眼前。在此基础上做定制Jetpack 是官方预设直接拿来即可用如果希望改成自己的风格建议从以下方向下手修改的仍是同一个~/.config/starship.toml换配色Jetpack 依赖终端主题发色。想让亮色更柔或更强可在 TOML 中新增[palette]并给各模块 style 字段显式换色更省事的做法是换一套终端配色方案即可全局生效。增删右侧模块在right_format的模块列表里增删条目即可控制“什么语言/工具值得显示”。例如把[aws] disabled改回false就能让 AWS profile 显示出来。调整版本显示把某个语言模块的version_format ${raw}改成v${major}等即可只显示主版本号version 格式化语法见 formatter/version.rs。改变信息层级若希望分支信息常驻左侧可将$git_branch从right_format移入format主序列。需要说明的两点边界本预设只保证在支持右侧提示符的 shell如 zsh、fish 等参见 src/init 目录下的各 shell 初始化脚本中呈现完整效果并且默认关闭$all全量渲染新增的语言模块若要显示必须手动写进right_format。此外本文描述基于当前仓库内嵌的 jetpack.toml版本注释为 1.0.0与对应源码安装前建议先执行starship preset jetpack预览内置版本再决定是否写入配置文件。【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考