十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Starship Jetpack 预设完全指南:基于 geometry 与 spaceship 的伪极简双栏提示符

Starship Jetpack 预设完全指南:基于 geometry 与 spaceship 的伪极简双栏提示符 Starship Jetpack 预设完全指南基于 geometry 与 spaceship 的伪极简双栏提示符【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starshipJetpack 是 Starship 官方预设集合见 预设总览中一款以伪极简pseudo minimalist为设计理念的提示符主题其灵感来自 geometry 与 spaceship 两款经典 Zsh 提示符。本指南将带你完整掌握 Jetpack 预设的设计思想、安装启用方式、format/right_format双栏布局的模块编排以及每一处 TOML 配置在 Starship 源码层面的实际含义帮助你理解并在此基础上定制出自己的极简提示符方案。Jetpack 预设是什么Jetpack 是一款伪极简主义预设它尽量收敛主提示符prompt的视觉噪音同时通过 Starship 的**右提示符right prompt**能力把目录、Git 状态、各语言运行时版本、云服务上下文等大量信息收纳到右侧区域让左侧只剩命令输入光标与极少的环境标识。Jetpack 预设最显著的特点也是它区别于其他预设的地方Jetpack 使用终端自身的色彩主题预设内部不强制指定背景色颜色风格随你的终端配色方案而变化。这意味着它天然适配各类终端配色如深色/浅色主题、Solarized、Gruvbox 终端方案等无需为特定颜色面板做适配。前置条件在启用 Jetpack 预设前需要满足以下两个条件shell 必须支持右提示符right-promptJetpack 的核心布局依赖right_format将大量模块渲染到提示符右侧。关于右提示符的启用方式与各 shell 的初始化细节参见仓库中的高级配置指南其中包含 Enable right prompt 相关说明。目前 Starship 已为常见 shell 提供了右提示符支持例如 xonsh 的初始化脚本中就有$RIGHT_PROMPT starship_rprompt的接线见 src/init/starship.xsh。推荐使用 JetBrains Mono 字体Jetpack 的符号体系大量使用了细线条、几何化的 Unicode 字符如◎、△、◫、⌂等在 JetBrains Mono 下可以获得最佳的渲染效果与对齐精度。安装与启用 Jetpack 预设启用 Jetpack 预设非常简单只需一条命令starship preset jetpack -o ~/.config/starship.toml该命令会把 Jetpack 的完整 TOML 配置写入~/.config/starship.toml覆盖你的现有 Starship 配置。执行后重新打开终端或执行exec $SHELL重新加载 shell即可看到新的提示符效果。如果你希望先预览配置内容再决定是否覆盖也可以直接查看或下载预设的完整 TOML 文件jetpack.toml。文件头部声明了版本与 schema# version: 1.0.0 $schema https://starship.rs/config-schema.json add_newline true continuation_prompt ▸▹ $schema指向 Starship 的配置 JSON Schema可在支持 JSON Schema 的编辑器中获得自动补全与校验add_newline true表示每次命令输入前先换行保持输出的整洁分层continuation_prompt定义了多行输入续行时的提示符▸▹使用dimmed white弱化视觉存在感。双栏布局format 与 right_format 的模块编排Jetpack 的布局精髓在于把提示符拆分成左、右两个渲染区。在 Starship 源码中这一能力由根配置结构承载src/configs/starship_root.rs定义了format默认$all与right_format默认空字符串两个字段而 src/print.rs 的打印逻辑会根据渲染目标Target::Main | Target::Right分别解析并渲染这两段格式串。Jetpack 的左栏主提示符format如下format ($nix_shell$container$fill$git_metrics\n)$cmd_duration\ $hostname\ $localip\ $shlvl\ $shell\ $env_var\ $jobs\ $sudo\ $username\ $character左栏只保留与当前环境强相关的模块第一行用括号包裹并以\n结尾仅在存在nix_shell/container/git_metrics内容时才显示随后依次是命令耗时、主机名、局域网 IP、shell 层级、当前 shell、环境变量、后台任务、sudo 状态、用户名最后以character光标收尾。Jetpack 的右栏信息区right_format则收纳了几乎所有信息型模块right_format $singularity\ $kubernetes\ $directory\ $vcsh\ $fossil_branch\ $git_branch\ $git_commit\ $git_state\ $git_status\ $hg_branch\ $pijul_channel\ $docker_context\ $package\ $c\ $cpp\ $cmake\ $cobol\ $daml\ $dart\ $deno\ $dotnet\ $elixir\ $elm\ $erlang\ $fennel\ $fortran\ $golang\ $guix_shell\ $haskell\ $haxe\ $helm\ $java\ $julia\ $kotlin\ $gradle\ $lua\ $maven\ $nim\ $nodejs\ $bun\ $ocaml\ $opa\ $perl\ $php\ $pulumi\ $purescript\ $python\ $raku\ $rlang\ $red\ $ruby\ $rust\ $scala\ $solidity\ $swift\ $terraform\ $vlang\ $vagrant\ $xmake\ $zig\ $buf\ $conda\ $pixi\ $meson\ $spack\ $memory_usage\ $aws\ $gcloud\ $openstack\ $azure\ $crystal\ $custom\ $status\ $os\ $battery\ $time右栏模块可归为几类版本控制git_branch、git_commit、git_state、git_status、git_metrics、hg_branch、pijul_channel、fossil_branch、vcsh、jj_bookmark目录与环境directory、container、singularity、docker_context、kubernetes、nix_shell、guix_shell、conda、pixi、spack语言运行时c、cpp、cmake、cobol、daml、dart、deno、dotnet、elixir、elm、erlang、fennel、fortran、golang、haskell、haxe、helm、java、julia、kotlin、gradle、lua、maven、nim、nodejs、bun、ocaml、opa、perl、php、pulumi、purescript、python、raku、rlang、red、ruby、rust、scala、solidity、swift、terraform、vlang、vagrant、xmake、zig、buf、meson云与系统状态aws、gcloud、openstack、azure、memory_usage、battery、time、os、status、custom。所有模块默认仅在检测到相关内容时才渲染例如没有 Node 项目就不显示 node 模块这正是伪极简的体现右侧信息再丰富也不会在无意义时占用空间。核心模块逐个解析character命令光标与状态指示character是左栏的灵魂Jetpack 为其定制了完整的成功/失败/Vim 状态符号[character] format $symbol success_symbol ◎ error_symbol ○ vimcmd_symbol ■ # not supported in zsh vimcmd_replace_one_symbol ◌ vimcmd_replace_symbol □ vimcmd_visual_symbol ▼上一条命令成功时显示亮黄色粗斜体◎失败时显示紫色○进入Vim 普通模式显示绿色■替换模式□、单字符替换◌、可视模式▼均有对应符号注意vimcmd_replace_one_symbol在 zsh 中不受支持配置注释已标明zsh 用户会回退到默认行为。从源码看Starship 的 character 模块配置 默认的成功符号是❯、失败符号是❯Jetpack 用更圆润的几何符号替代了箭头风格弱化了错误状态的刺眼程度。directory目录展示[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 △home_symbol ⌂家目录以 ⌂ 图标表示truncation_length 2路径仅保留最近两级配合truncation_symbol □ 表示被折叠的部分read_only ◈只读目录会附加 ◈ 标记use_os_path_sep true使用系统原生路径分隔符Windows 为\其余为/repo_root_format在 Git 仓库根目录内时会用粗体蓝色突出仓库根路径并在末尾追加亮蓝色△提示当前处于仓库内。git_branch、git_status 与 git_metricsGit 状态三重奏[git_branch] format $branch(:$remote_branch) symbol △ style italic bright-blue truncation_symbol ⋯ truncation_length 11 ignore_branches [main, master] only_attached true分支符号统一使用几何化的△亮蓝粗斜体与 directory 的仓库根标记呼应ignore_branches [main, master]默认分支不显示减少噪音only_attached true处于 detached HEAD 时不再显示分支名此时由其他模块提示。[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_status把所有工作区状态符号统一包裹在⎪…⎥括号内未跟踪◌、已修改●、已暂存▪、已重命名◎、已删除✕、冲突◪、暂存 stash◃◈并用▴│n│/▿│n│分别表示领先/落后提交数◇表示分叉。整体风格高度符号化一眼可读。[git_metrics] format (▴$added)(▿$deleted) added_style italic dimmed green deleted_style italic dimmed red ignore_submodules true disabled falsegit_metrics统计相对上游的增删行数▴绿色表示新增行、▿红色表示删除行。它出现在左栏第一行与 nix_shell、container 同组是 Jetpack 少有的放在左侧的 Git 信息用于快速感知本次改动的体量。sudo、jobs 与 localip左侧的环境感知[sudo] format $symbol style bold italic bright-purple symbol ⋈┈ disabled falsesudo模块在检测到已缓存 sudo 凭据时显示⋈┈默认该模块是关闭的此处显式disabled false开启。[jobs] format $symbol$number style white symbol ▶后台任务数用蓝色▶加白色数字表示。[localip] ssh_only true format ◯$localipv4 disabled falselocalip仅在 SSH 会话中显示ssh_only true用品红色◯IP提示当前连接来源避免在本地终端上浪费空间。time 与 battery右侧的常驻状态[time] disabled false format $time time_format %R utc_time_offset local style italic dimmed white时间模块默认处于关闭状态Jetpack 显式开启并用%RHH:MM 24 小时制格式、utc_time_offset local按本地时区显示样式为弱化的italic dimmed white安静地待在最右侧。[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 yellow电量模块按阈值分级着色≤20% 红色粗斜体告警≤60% 亮紫≤70% 黄色满电用实心█充电显示绿色↑放电↓。语言运行时统一化的版本展示Jetpack 对语言模块做了高度统一的重构——所有版本都用${raw}原样输出不做语义化版本裁剪并配以各自的几何符号[nodejs] format node ◫ ($version) version_format ${raw} detect_files [package-lock.json, yarn.lock] detect_folders [node_modules] detect_extensions []nodejs 模块在package-lock.json/yarn.lock或node_modules存在时才激活detect_extensions留空以避免误判显示绿色粗体的◫ (v22.3.0)样式版本。类似地pythonpy ⌉⌊ v3.12.1rubyrb ◆ v3.3.0rustrs ⊃ v1.79.0lualua ⨀ v5.4.6denodeno ∫ v1.44.0bunbun ◫ (v1.1.0)swiftsw ◁ v5.10packagepkg ◨ v1.2.3golanggo ∩ v1.22.2、javajava ∪ 21.0.1、haskellhs ❯λ 9.6.5、juliajl ◎ 1.10.2等。每个模块的format都以斜体的短名如node、py、rs开头再跟版本与符号整体在右栏形成整齐的节奏。其余模块速览env_var.VIMSHELL[env_var.VIMSHELL]定制了环境变量模块当VIMSHELL被设置时以绿色斜体显示其值配合 Vim 集成场景使用nix_shellnix shell 状态用✶标记纯环境⌾绿色、不纯环境⌽红色、未知◌黄色并显示环境名memory_usagemem ▪▫▪ 2.3G( 1.1G)展示内存与交换分区占用云模块aws/gcloud/openstack/azure仅aws被显式disabled true关闭其余保持默认按需显示fill左栏第一行末尾的fill模块symbol 空格用于在环境信息行与主提示符之间填充占位实现两行布局的视觉分隔。完整 TOML 配置以下是 Jetpack 预设的完整配置与 docs/public/presets/toml/jetpack.toml 一致v1.0.0可直接对照上文解析# version: 1.0.0 $schema https://starship.rs/config-schema.json 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\ $git_branch\ $git_commit\ $git_state\ $git_status\ $hg_branch\ $pijul_channel\ $docker_context\ $package\ $c\ $cpp\ $cmake\ $cobol\ $daml\ $dart\ $deno\ $dotnet\ $elixir\ $elm\ $erlang\ $fennel\ $fortran\ $golang\ $guix_shell\ $haskell\ $haxe\ $helm\ $java\ $julia\ $kotlin\ $gradle\ $lua\ $maven\ $nim\ $nodejs\ $bun\ $ocaml\ $opa\ $perl\ $php\ $pulumi\ $purescript\ $python\ $raku\ $rlang\ $red\ $ruby\ $rust\ $scala\ $solidity\ $swift\ $terraform\ $vlang\ $vagrant\ $xmake\ $zig\ $buf\ $conda\ $pixi\ $meson\ $spack\ $memory_usage\ $aws\ $gcloud\ $openstack\ $azure\ $crystal\ $custom\ $status\ $os\ $battery\ $time [fill] symbol [character] format $symbol success_symbol ◎ error_symbol ○ vimcmd_symbol ■ # not supported in zsh vimcmd_replace_one_symbol ◌ vimcmd_replace_symbol □ vimcmd_visual_symbol ▼ [env_var.VIMSHELL] format $env_value style green italic [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 false [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 △ [cmd_duration] format ◄ $duration [jobs] format $symbol$number style white symbol ▶ [localip] ssh_only true format ◯$localipv4 disabled false [time] disabled false format $time time_format %R utc_time_offset local style italic dimmed white [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 yellow [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 ✕ [deno] format deno ∫ $version version_format ${raw} [lua] format lua ${symbol}${version} version_format ${raw} symbol ⨀ style bold bright-yellow [nodejs] format node ◫ ($version) version_format ${raw} detect_files [package-lock.json, yarn.lock] detect_folders [node_modules] detect_extensions [] [bun] format bun ◫ ($version) version_format ${raw} [python] format py ${symbol}${version} symbol ⌉⌊ version_format ${raw} style bold bright-yellow [ruby] format rb ${symbol}${version} symbol ◆ version_format ${raw} style bold red [rust] format rs $symbol$version symbol ⊃ version_format ${raw} style bold red [package] format pkg $symbol$version version_format ${raw} symbol ◨ style dimmed yellow italic bold [swift] format sw ${symbol}${version} symbol ◁ style bold bright-red version_format ${raw} [aws] disabled true format aws $symbol $profile $region style bold blue symbol ▲ [buf] symbol ■ format buf $symbol $version $buf_version [c] symbol ℂ format $symbol($version(-$name)) [cpp] symbol ℂ format $symbol($version(-$name)) [conda] symbol ◯ format conda $symbol$environment [pixi] symbol ■ format pixi $symbol$version ($environment ) [dart] symbol ◁◅ format dart $symbol($version ) [docker_context] symbol ◧ format docker $symbol$context [elixir] symbol △ format exs $symbol $version OTP $otp_version [elm] symbol ◩ format elm $symbol($version ) [golang] symbol ∩ format go $symbol($version ) [haskell] symbol ❯λ format hs $symbol($version ) [java] symbol ∪ format java ${symbol}(${version} ) [jj_bookmark] format $symbol$bookmark($remote)$diverged( \\($overflow_count others\\)) symbol △ style italic bright-blue truncation_symbol ⋯ truncation_length 11 ignore_names [main, master] [julia] symbol ◎ format jl $symbol($version ) [memory_usage] symbol ▪▫▪ format mem ${ram}( ${swap}) [nim] symbol ▴▲▴ format nim $symbol($version ) [nix_shell] style bold italic dimmed blue symbol ✶ format $symbol nix⎪$state⎪ $name impure_msg ⌽ pure_msg ⌾ unknown_msg ◌ [spack] symbol ◇ format spack $symbol$environment效果预览Jetpack 预设运行效果截图如上图所示Jetpack 的整体效果是左侧仅一行轻量信息加命令光标右侧从上到下依次排列目录、Git 状态与各类运行时信息视觉重心清晰、信息密度高但不拥挤。定制与扩展建议Jetpack 的配置完全基于标准 Starship TOML你可以自由调整调整右栏模块在right_format中增删模块名即可。例如不使用云服务可删除$aws、$gcloud、$openstack、$azure不关心内存可删除$memory_usage。修改符号风格所有符号都集中在各模块的symbol与format字段替换为 Nerd Font 符号或纯文本符号可参考预设集合中的 no-nerd-font、nerd-font 等预设即可形成自己的风格。适配终端配色由于 Jetpack 不指定背景色其前景色如bright-blue、bright-yellow会随终端主题变化。若在浅色终端下某些亮色辨识度不足可直接调整各模块style字段中的颜色名。恢复默认配置如需还原删除~/.config/starship.toml后重新加载 shellStarship 将回到默认format $all行为对应源码 src/configs/starship_root.rs 中的默认值。常见问题右栏不显示请确认你的 shell 支持右提示符并已正确初始化 Starship参见高级配置指南部分 shell 需要额外的初始化钩子才能刷新右侧内容。符号显示为方块/乱码说明当前字体缺少 Jetpack 使用的 Unicode 符号安装并选用 JetBrains Mono或其他符号覆盖完整的等宽字体即可解决。zsh 下 Vim 替换模式符号不生效如配置注释所述vimcmd_replace_one_symbol在 zsh 中不受支持属预期行为。VIMSHELL 环境变量模块[env_var.VIMSHELL]仅在检测到名为VIMSHELL的环境变量时渲染若未设置该变量则不会显示。Jetpack 用一套克制的符号系统与双栏布局在极简与信息完备之间取得了平衡。理解它的format/right_format划分思路后你完全可以以它为模板搭建属于自己的轻量、高信息密度的跨 shell 提示符。【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表