ARTICLE DETAIL

资讯详情

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

Starship No Runtime Versions Preset 详解:隐藏语言运行时版本号,打造干净的容器/虚拟化环境提示符

Starship No Runtime Versions Preset 详解:隐藏语言运行时版本号,打造干净的容器/虚拟化环境提示符 Starship No Runtime Versions Preset 详解隐藏语言运行时版本号打造干净的容器/虚拟化环境提示符【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship导读Starship 是跨 Shell 的极简、高速、可无限定制的提示符prompt工具。No Runtime Versions隐藏运行时版本预设用于屏蔽所有语言运行时runtime的版本号显示仅保留模块符号与样式让提示符保持精简。它尤其适合在容器container或虚拟化virtualized环境中工作、不希望提示符被v3.11.5之类的版本号占满屏幕的开发者。读完本文你将掌握该预设的完整配置内容、starship preset命令的用法与底层实现并能根据自身需求自由裁剪这份配置。预设概述与适用场景No Runtime Versions是 Starship 官方收录的社区预设之一见 docs/presets/README.md其定位与介绍原文一致该预设会隐藏语言运行时的版本。如果你在容器或虚拟化环境中工作这个预设就是为你准备的。它的核心思想非常简单保留运行时模块的“存在感”符号 样式去掉“版本信息”version 变量。这样你依然能一眼看出当前目录属于哪个语言生态如 Python、Node、Rust但不会被具体的版本字符串干扰。典型的适用场景包括容器 / Docker 环境镜像内的运行时版本往往固定且已知无需每次都在提示符中重复显示CI / 远程开发环境版本由环境管理工具如 mise、pyenv、conda统一控制提示符只需反映“当前是什么环境”追求极简提示符希望提示符信息密度更低、更清爽的用户。需要注意的是该预设只影响模块的显示格式不改变任何模块的探测逻辑——运行时是否被检测到、符号是否显示仍然由各模块自身的detect_*配置与命令探测决定下文会结合源码说明。预设的完整配置内容本预设的完整 TOML 配置文件位于 docs/public/presets/toml/no-runtime-versions.toml。其本质是为每一个带版本号的语言运行时模块覆盖format字段去掉$version变量。配置文件开头还带上了 JSON Schema 引用便于编辑器获得补全与校验$schema https://starship.rs/config-schema.json下面按模块分类列出全部配置与仓库文件逐条对应单一符号模块format 仅保留符号[bun] format via $symbol [buf] format with $symbol [cmake] format via $symbol [cobol] format via $symbol [crystal] format via $symbol [daml] format via $symbol [dart] format via $symbol [deno] format via $symbol [elixir] format via $symbol [elm] format via $symbol [erlang] format via $symbol [fennel] format via $symbol [fortran] format via $symbol [gleam] format via $symbol [golang] format via $symbol [gradle] format via $symbol [haskell] format via $symbol [haxe] format via $symbol [helm] format via $symbol [java] format via $symbol [julia] format via $symbol [kotlin] format via $symbol [lua] format via $symbol [maven] format via $symbol [meson] format via $symbol [mojo] format with $symbol [nim] format via $symbol [nodejs] format via $symbol [odin] format via $symbol [opa] format via $symbol [perl] format via $symbol [php] format via $symbol [purescript] format via $symbol [python] format via $symbol [quarto] format via $symbol [raku] format via $symbol [red] format via $symbol [rlang] format via $symbol [ruby] format via $symbol [rust] format via $symbol [scala] format via $symbol [solidity] format via $symbol [swift] format via $symbol [typst] format via $symbol [vagrant] format via $symbol [vlang] format via $symbol [xmake] format via $symbol [zig] format via $symbol保留额外上下文的模块除符号外仍显示少量非版本信息[c] format via $symbol($name) [cpp] format via $symbol($name) [dotnet] format $symbol( $tfm ) [ocaml] format via $symbol(\($switch_indicator$switch_name\) ) [pixi] format via $symbol($environment ) [pulumi] format via $symbol$stack这些模块之所以保留额外变量是因为它们属于“非版本”信息$nameC / C 编译器名称如 gcc、clang$tfm.NET 目标框架名Target Framework Moniker$switch_indicator/$switch_nameOCaml 的 switch 指示器与名称$environmentpixi 环境名$stackPulumi 的堆栈名。快速上手应用预设原文档给出的核心命令在 docs/presets/no-runtimes.md 中starship preset no-runtime-versions -o ~/.config/starship.toml这条命令的作用是将no-runtime-versions预设的 TOML 内容写入~/.config/starship.toml-o/--output指定输出文件从而覆盖默认配置。应用后重新加载 Shell或重新执行starship init对应的初始化即可看到所有运行时模块不再显示版本号。如果你希望先查看内容再决定可以不带-o让预设内容直接打印到标准输出stdoutstarship preset no-runtime-versions如果想查看当前 Starship 支持的所有预设名称starship preset --list命令的底层实现preset子命令在 src/main.rs 中定义其参数包括name预设名称必填除非使用--list通过value_enum约束为内置预设集合-o, --output FILE将预设写入指定文件而非标准输出-f, --force配合-o使用输出文件已存在时强制覆盖-l, --list列出所有内置预设名。对应的处理逻辑在 src/print.rs 的preset_command函数中若传入--list直接打印预设名列表否则通过shadow::get_preset_content(name)从编译期嵌入的预设资源中取出 TOML 文本若指定了output路径则调用write_file_atomic原子写入配合force决定是否覆盖已存在文件见 src/utils/mod.rs 中的write_file_atomic否则将内容写入 stdout。预设名称到内容的映射由shadow_rs在构建期生成参见 src/lib.rs 中的shadow!(shadow)宏因此预设内容在编译时就被嵌入二进制运行时无需访问网络。仓库中对应的测试用例preset_command_output_to_file与preset_command_output_existing_file_force见 src/print.rs验证了“输出到文件”和“强制覆盖已存在文件”两条路径的行为测试中直接以include_str!引入docs/public/presets/toml/nerd-font-symbols.toml作为期望输出比对。逐模块分析隐藏了什么保留了什么为了理解该预设的“裁剪”逻辑对比各模块的默认 format与预设覆盖后的 format 即可一目了然。以 Python 模块为例其默认配置定义在 src/configs/python.rsformat via ${symbol}${pyenv_prefix}(${version} )(\\($virtualenv\\) ) version_format v${raw}即默认显示symbol pyenv 前缀 版本号 虚拟环境名应用本预设后 format 被覆盖为via $symbol$version与$virtualenv均不再渲染。同理可推广到其他模块预设对format的覆盖等价于删除了各模块默认 format 中的$version等版本相关变量而保留$symbol图标与$style样式。需要强调的是这只影响“显示什么”不影响“模块是否出现”的判定——各模块的启用条件如detect_files、detect_extensions、detect_commands以及命令探测依然生效详见各模块配置文件如 src/configs/nodejs.rs、src/configs/rust.rs。此外本预设没有覆盖version_format或detect_*系列字段也没有触碰非语言运行时模块如git_branch、directory、character等因此其余模块保持默认行为。手动定制只隐藏部分运行时starship preset命令会把全部模块的配置一次性写入目标文件。如果你只想隐藏部分运行时版本例如只隐藏 Python 和 Node 的版本但保留 Rust 版本可以分两步操作先把预设内容导出查看或直接参考 docs/public/presets/toml/no-runtime-versions.toml在~/.config/starship.toml中只保留你关心的模块段落删掉其余[xxx]块。例如只隐藏 Python 与 Node 的版本号[python] format via $symbol [nodejs] format via $symbol由于 TOML 中未出现的模块字段会回落到默认值这种局部覆盖是安全且可预期的。同样地若想恢复某个模块的版本显示删除对应的[xxx]配置块即可。与其他预设的关系No Runtime Versions是 Starship 官方预设集docs/presets/README.md中的一员与它同属“精简/去装饰”思路的还有No Nerd Fonts 预设让整个提示符不使用任何 Nerd Font 符号No Empty Icons 预设未检测到工具集时不显示图标Plain Text Symbols 预设将各模块符号替换为纯文本。三者可以按需组合例如在容器内同时应用no-runtime-versions与no-nerd-font即可得到一个既无版本号、又无需安装 Nerd Font 字体的最小化提示符。组合方式也很简单——把多个预设的 TOML 段落合并进同一个~/.config/starship.toml即可注意同名模块段落取最后一次出现的值。结语No Runtime Versions预设以一行命令、数十个模块format覆盖的方式精准解决了“容器/虚拟化环境提示符过于嘈杂”的问题。它不改变模块探测逻辑只裁剪显示内容因此行为可预期、回退容易。配合starship preset --list、-o输出与 TOML 局部覆盖机制你可以从这份预设出发快速构建属于自己的极简提示符。【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表