Starship Bracketed Segments 预设实战:用方括号统一模块排版并看懂 format 字符串语法

发布时间:2026/9/9 14:04:14

Starship Bracketed Segments 预设实战:用方括号统一模块排版并看懂 format 字符串语法
Starship Bracketed Segments 预设实战用方括号统一模块排版并看懂 format 字符串语法【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship本指南围绕 Starship 官方社区预设Bracketed Segments展开讲解该预设如何把提示符中所有内置模块的默认引导文字如 via、on替换为整齐的方括号排版并给出可直接复制的完整 TOML 配置。文中将同时从 预设总览对应本地化副本 docs/no-NO/presets/bracketed-segments.md、starship preset子命令源码与各模块默认配置入手帮助你理解 format 字符串的语法、掌握一键应用与按模块定制的方法。预设做什么用方括号取代 via / on 引导词Starship 的提示符由大量模块module拼接而成。默认情况下很多语言与工具模块在展示信息前会带一段固定的引导文字例如语言运行时会显示via v1.58.1这样的前缀云服务模块会显示on ☁️ ...这样的前缀。这些引导词的来源可以在每个模块的默认配置中直接看到。以 aws.rs 为例其默认format是format: on [$symbol($profile )(\\($region\\) )(\\[$duration\\] )]($style),再如 bun.rs 与 c.rs默认格式分别为via $symbol($version )与via $symbol($version(-$name) )。可见via / on 是写在花哨段styled segment之外的普通文本。Bracketed Segments 预设做的事非常聚焦把每个内置模块的format整体改写为\[...\]的形式——用一对字面方括号把原本带样式的模块内容包起来同时去掉 via、on 这类引导词。从上图可见最终提示符中每个信息段都变成了紧凑的方括号形态例如分支模块[⤴ trunk]包版本模块[ v1.1.0]Rust 工具链[ v1.58.1]Node.js 版本[ v17.6.0]命令耗时[⏱ 3s]root 用户[root]该预设属于社区提交预设集合中的一员与其并列的还有 Nerd Font Symbols、No Nerd Fonts、Plain Text Symbols 等完整索引见 docs/presets/README.md。一键应用starship preset 命令在已经安装并初始化 Starship 的前提下应用该预设只需一条命令starship preset bracketed-segments -o ~/.config/starship.toml执行后预设内容会被写入 Starship 的默认配置文件~/.config/starship.toml随后重新加载配置即可看到效果重新打开终端或在当前 Shell 中再次执行eval $(starship init bash)之类初始化脚本。参数与用法变体从命令行入口的定义src/main.rs可以看到starship preset子命令支持以下选项选项含义约束name位置参数要导出的预设名取值受限于内置预设枚举与--list互斥时必填存在--list时可不填-o, --output path把预设写入指定文件而非打印到 stdout与--list冲突-f, --force当目标输出文件已存在时强制覆盖依赖--output同时出现-l, --list列出所有可用预设名不能与--output并用实际常用的几个姿势# 1. 只查看内置预设清单 starship preset --list # 2. 把 bracketed-segments 内容直接打印到终端不写文件便于预览或重定向 starship preset bracketed-segments # 3. 写入指定路径文件已存在时需加 --force 覆盖 starship preset bracketed-segments -o ~/.config/starship.toml -f# 4. 想在正式覆盖前先看当前生效配置与内置默认之间的差异可先备份 cp ~/.config/starship.toml ~/.config/starship.toml.bak命令背后的实现链路preset子命令的处理函数位于 src/print.rs。其逻辑为若传了--list就调用shadow::get_preset_list()枚举可用预设名否则调用shadow::get_preset_content(...)取出对应预设的 TOML 内容再按--output决定写入文件还是打印到 stdout。而预设内容的真身就是仓库 docs/public/presets/toml/ 目录下的 TOML 文件该目录同时提供bracketed-segments.toml等 12 个预设的下载与预览。文档页面中 /public/presets/toml/bracketed-segments.toml一行的作用就是把该文件原文注入页面展示。仓库还为这一命令内置了同步测试见 src/print.rs测试通过include_str!(../docs/public/presets/toml/...)比对输出与文档目录下的 TOML确保文档里的预设文件与命令导出的内容永远保持一致。原理看懂 format 字符串里的括号与转义要理解该预设为什么能把模块段装进方括号需要掌握 Starship format 字符串的三条规则带样式段内容表示把内容按样式渲染内容中可引用$symbol、$version、$branch、$user、$duration等模块变量样式占位$style会自动展开为该模块在配置中style键指定的颜色/样式因此预设里几乎每个模块都写作...等于把样式完全托付给模块自身少数模块还有$added_style、$deleted_style这类额外样式变量字面方括号转义普通文本中的[与]需写成\[与\]才能原样输出而不会被解析为段边界可选分组( ... )中的内容仅当内部变量有值时才显示例如($version)在没有版本信息时整组消失。基于以上规则默认写法与预设写法可以互相翻译模块默认 format简化Bracketed Segments 预设 formatgit_branchon $symbol$branch ...\[$symbol$branch\]rustvia $symbol($version)\[$symbol($version)\]cmd_durationtook ...\[⏱ $duration\]注意 TOML 文件中的 format 使用了单引号字面字符串因此\[、\]中的反斜杠会被原样保留最终由 Starship 的 format 解析器解释为输出一个字面[。于是每个模块输出形如[ 带样式的模块内容 ]完整 TOML 逐类剖析预设的完整内容存放在仓库 docs/public/presets/toml/bracketed-segments.toml与命令导出的内容完全一致。按其覆盖的模块可归纳为几大类① 语言与运行时版本如c、rust、python、nodejs、go、ruby等统一采用\[$symbol($version)\]这类模板图标 版本被方括号包住特殊一点的如 Python 还会带pyenv前缀与虚拟环境名[python] format \[${symbol}${pyenv_prefix}(${version})(\($virtualenv\))\]② 版本控制与代码指标git_branch、git_commit、git_status、git_state、git_metrics、fossil_*、hg_*、pijul_channel、jj_*、vcsh等。其中 git_status 保持默认的外层圆括号分组、内层方括号的形态而增删行统计拆成两个独立方括号段[git_status] format ([\[$all_status$ahead_behind\]]($style)) [git_metrics] format \[$added\]\[-$deleted\]③ 云平台、容器与远程环境aws、azure、gcloud、openstack、kubernetes、docker_context、container、netns、singularity、nix_shell、guix_shell、conda、direnv、spack、mise、pixi等。例如 aws 仍保留区域与耗时的可选分组[aws] format \[[$symbol($profile)(\($region\))(\[$duration\])]($style)\]④ 系统状态与用户信息battery、cmd_duration、time、memory_usage、jobs、status、sudo、username、hostname、shell、localip等。例如命令耗时带上了时钟符号[cmd_duration] format \[⏱ $duration\]⑤ 构建工具与包管理器cmake、gradle、maven、meson、xmake、bun、deno、npm相关模块以及helm、terraform、pulumi、opa等基础设施工具模板与语言类基本一致。未被覆盖的模块对照 src/configs 下全部内置模块可以发现character提示符图标、directory目录路径见截图中的rust-project保持无方括号、env_var、fill、line_break等不在本预设改写范围内——它们本就不使用 via/on 这类引导词排版。下面的完整配置可供直接复制保存$schema https://starship.rs/config-schema.json [aws] format \[[$symbol($profile)(\($region\))(\[$duration\])]($style)\] [azure] format \[$symbol($subscription)\] [battery] format \[$symbol$percentage\] [buf] format \[$symbol($version)\] [bun] format \[$symbol($version)\] [c] format \[$symbol($version(-$name))\] [cmake] format \[$symbol($version)\] [cmd_duration] format \[⏱ $duration\] [cobol] format \[$symbol($version)\] [conda] format \[$symbol$environment\] [container] format \[[$symbol \[$name\]]($style)\] [cpp] format \[$symbol($version(-$name))\] [crystal] format \[$symbol($version)\] [daml] format \[$symbol($version)\] [dart] format \[$symbol($version)\] [deno] format \[$symbol($version)\] [direnv] format \[$symbol$loaded/$allowed\] [docker_context] format \[$symbol$context\] [dotnet] format \[$symbol($version)( $tfm)\] [elixir] format \[$symbol($version \(OTP $otp_version\))\] [elm] format \[$symbol($version)\] [erlang] format \[$symbol($version)\] [fennel] format \[$symbol($version)\] [fortran] format \[$symbol($version)\] [fossil_branch] format \[$symbol$branch\] [fossil_metrics] format \[$added\]\[-$deleted\] [gcloud] format \[$symbol$account($domain)(\($region\))\] [git_branch] format \[$symbol$branch\] [git_commit] format \[\($hash$tag\)\] [git_metrics] format \[$added\]\[-$deleted\] [git_state] format \[$state ($progress_current/$progress_total)\] [git_status] format ([\[$all_status$ahead_behind\]]($style)) [gleam] format \[$symbol($version)\] [golang] format \[$symbol($version)\] [gradle] format \[$symbol($version)\] [guix_shell] format \[$symbol\] [haskell] format \[$symbol($version)\] [haxe] format \[$symbol($version)\] [helm] format \[$symbol($version)\] [hg_branch] format \[$symbol$branch\] [hostname] format \[$ssh_symbol($hostname)\] [java] format \[$symbol($version)\] [jj_bookmark] format \[$symbol$bookmark($remote)$diverged( \($overflow_count others\))\] [jj_change] format \[\($change\)\] [jobs] format \[$symbol$number\] [julia] format \[$symbol($version)\] [kotlin] format \[$symbol($version)\] [kubernetes] format \[$symbol$context( \($namespace\))\] [localip] format \[$localipv4\] [lua] format \[$symbol($version)\] [maven] format \[$symbol($version)\] [memory_usage] format \$symbol[$ram( | $swap)\] [meson] format \[$symbol$project\] [mise] format \[$symbol$health\] [mojo] format \[$symbol($version)\] [nats] format \[$symbol$name\] [netns] format \[[$symbol \[$name\]]($style)\] [nim] format \[$symbol($version)\] [nix_shell] format \[$symbol$state( \($name\))\] [nodejs] format \[$symbol($version)\] [ocaml] format \[$symbol($version)(\($switch_indicator$switch_name\))\] [odin] format \[$symbol($version )\] [opa] format \[$symbol($version)\] [openstack] format \[$symbol$cloud(\($project\))\] [os] format \[$symbol\] [package] format \[$symbol$version\] [perl] format \[$symbol($version)\] [php] format \[$symbol($version)\] [pijul_channel] format \[$symbol$channel\] [pixi] format \[$symbol$version( $environment)\] [pulumi] format \[$symbol$stack\] [purescript] format \[$symbol($version)\] [python] format \[${symbol}${pyenv_prefix}(${version})(\($virtualenv\))\] [quarto] format \[$symbol($version)\] [raku] format \[$symbol($version-$vm_version)\] [red] format \[$symbol($version)\] [rlang] format \[$symbol($version)\] [ruby] format \[$symbol($version)\] [rust] format \[$symbol($version)\] [scala] format \[$symbol($version)\] [shell] format \[$indicator\] [singularity] format \[[$symbol\[$env\]]($style)\] [solidity] format \[$symbol($version)\] [spack] format \[$symbol$environment\] [status] format \[$symbol$status\] [sudo] format \[as $symbol\] [swift] format \[$symbol($version)\] [terraform] format \[$symbol$workspace\] [time] format \[$time\] [typst] format \[$symbol($version)\] [username] format \[$user\] [vagrant] format \[$symbol($version)\] [vcsh] format \vcsh [$symbol$repo\] [vlang] format \[$symbol($version)\] [xmake] format \[$symbol($version)\] [zig] format \[$symbol($version)\]按需改造保留预设风格并微调单个模块由于该预设是通过给每个模块显式设置format键生效的所以它是可局部覆盖的。如果你的需求只是大多数模块用方括号但某个模块想换个排版或符号可以在配置文件中新增一个同名模块节来覆盖预设中的对应format。例如把 Python 段的方括号改为自定义标签[python] format \ ${symbol}${pyenv_prefix}(${version})(\($virtualenv\))\ 要查看改动前后系统计算的完整配置可借助 src/main.rs 中定义的starship print-config子命令# 打印当前生效配置 starship print-config # 打印内置默认配置用于与预设改动的字段做对比 starship print-config --default回滚与注意事项覆盖前先备份预设通过-o ~/.config/starship.toml会把整个配置文件替换为该预设内容若此前已有大量自定义项建议先cp备份再决定是整体应用还是只摘取所需模块段合并进原配置。回滚方式把配置文件恢复为备份内容即可若想从零回到官方默认外观可删除配置文件中的相关format键或重新初始化配置。适用范围预设只调整内置模块的formatcustom、env_var等需要用户自定内容的模块以及directory、line_break、fill、character这类不使用 via/on 引导词的模块均不受影响。配置校验所有格式键均引用模块自身变量$symbol、$version等删除引导词并不会导致模块失效若手工编辑后拿不准语法可用starship print-config快速确认解析是否成功。综上Bracketed Segments 预设以极简的配置思路统一\[...\]模板实现了整条提示符排版的规则化既是一份可直接套用的配色/排版方案也是一份学习 Starship format 字符串转义、可选分组与$style用法的现成教材。【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Scrapy分布式爬虫实战:Redis队列与动态iframe处理全解析

Scrapy分布式爬虫实战:Redis队列与动态iframe处理全解析

2026/9/9 14:04:14

做爬虫的朋友应该都有这种感觉:单机 Scrapy 跑得再快,量一上来就卡在 CPU、带宽、反爬封 IP 这些事儿上。于是大家很自然地想到加机器,但加机器不是简单把爬虫复制一遍,关键是怎么让多台机器协同工作。今天这篇就聊聊我用 Scrapy …

STM32F103 CAN Bootloader实战:从协议设计到Flash升级

STM32F103 CAN Bootloader实战:从协议设计到Flash升级

2026/9/9 14:04:14

简介:一套基于ARM微控制器(如STM32)的CAN Bootloader升级协议代码,面向嵌入式系统开发工程师,解决通过CAN总线完成固件在线升级与引导加载的问题。整包共27个文件,压缩包约440KB,包含源码&#…

红米手机短信导出到电脑的5种实用方法,不用再折腾

红米手机短信导出到电脑的5种实用方法,不用再折腾

2026/9/9 13:54:14

手机里躺着几千条短信,换新手机时要迁移,工作上要留痕,甚至有时候需要把某段聊天记录作为凭证存档,这时候就绕不开一个需求:红米手机短信传输至电脑。MIUI和HyperOS这两代系统我都用过,实话实说&#xff0c…

具身智能与Agent Memory:长程任务规划中的记忆机制解析

具身智能与Agent Memory:长程任务规划中的记忆机制解析

2026/9/9 14:34:15

具身智能系列已经写到了第 4 篇,前几篇我们聊过具身智能的基本概念,也聊过机械臂/机器人怎么感知环境、怎么规划动作。但有一个问题很多人会忽略:机器人在真实世界里执行任务,不是“看一眼做一步”这么简单。真实的家庭环境里&…

Overleaf 快捷键完全指南:内置映射、自定义配置与效率技巧

Overleaf 快捷键完全指南:内置映射、自定义配置与效率技巧

2026/9/9 14:34:15

Overleaf 快捷键完全指南:内置映射、自定义配置与效率技巧 【免费下载链接】overleaf A web-based collaborative LaTeX editor 项目地址: https://gitcode.com/GitHub_Trending/ov/overleaf 写一篇论文,每次编译要点三四次菜单,加个批…

长程任务总失败?具身智能的 Agent Memory 才是关键

长程任务总失败?具身智能的 Agent Memory 才是关键

2026/9/9 14:34:15

这次我们聊的不是又跑通一个新模型,而是具身智能里最容易被讲玄、也最影响落地的一件事:长程任务为什么总在执行到一半时失败,以及 Agent Memory 到底在中间起了什么作用。你如果已经看过前面几篇具身智能入门科普,应该对“感知 -…

旧Mac升级最新macOS:OpenCore Legacy Patcher 3阶段实操指南

旧Mac升级最新macOS:OpenCore Legacy Patcher 3阶段实操指南

2026/9/9 14:34:15

旧Mac升级最新macOS:OpenCore Legacy Patcher 3阶段实操指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 打开"系统设置"想升级时&a…

Nginx安装全指南:源码编译、包管理器、Docker与离线部署一次讲透

Nginx安装全指南:源码编译、包管理器、Docker与离线部署一次讲透

2026/9/9 14:34:15

做过几年服务器运维和Java后端的人,对Nginx应该都不陌生。前一阵同事在给测试环境搭新服务,照着网上教程吭哧吭哧装Nginx,结果configure那一步就报缺PCRE库,装完PCRE又发现没带SSL模块,反反复整了半天,最后…

机盖重拓扑P2阶段:硬表面建模布线细节与工程实践指南

机盖重拓扑P2阶段:硬表面建模布线细节与工程实践指南

2026/9/9 14:24:15

很多做硬表面建模的同学,应该都有过这种体验:高模雕刻阶段很爽,细节怎么加都行,一到重拓扑就头疼,尤其是机盖这种“看似平整、实则到处都是曲面转折”的部件。前面 P1 阶段可能已经解决了大型和整体布线框架&#xff0…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/9 1:14:29

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/8 4:55:53

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/8 22:37:26

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

扩散模型图像恢复实战:从DDPM原理到PyQt5可视化系统

扩散模型图像恢复实战:从DDPM原理到PyQt5可视化系统

2026/9/9 0:03:36

简介:面向毕业设计场景的PyQt5扩散模型图像恢复项目,提供完整Python源码与项目说明,适合图像处理、深度学习方向的高年级本科生与研究生参考。项目在模块设计上覆盖图像处理、扩散模型、参数配置、用户界面与结果评估五部分,具体涉…

开关电源环路裕量测试实战:相位裕量与增益裕量详解

开关电源环路裕量测试实战:相位裕量与增益裕量详解

2026/9/9 0:03:36

1. 项目概述:为什么环路裕量测试是电子工程师绕不开的“体检项目”“从零开始的电子工程师生活(6)——环路裕量测试”,这个标题一出来,老电源工程师可能已经下意识摸了摸示波器探头,新同事则大概率在想&…

定时插座芯片怎么选?专用定时IC与单片机MCU选型对比

定时插座芯片怎么选?专用定时IC与单片机MCU选型对比

2026/9/9 0:03:36

拆开市面上不同价位的定时插座,你会发现一个有意思的现象:有的里面躺着一颗黑色的软封装芯片,丝印都看不清;有的则是一块小小的蓝色或绿色PCB,上面赫然印着STM8或者STC的字样。同样叫"定时插座",…

远程协作的工作台整理

远程协作的工作台整理

2026/9/8 4:23:39

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/8 3:19:39

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/8 4:00:23

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…