Starship Tokyo Night 预置配置全解析快速启用、Powerline 色彩布局与内置命令实现【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starshipTokyo Night 预置Preset是 Starship 官方收录的社区配色方案之一它把 VS Code 上广受欢迎的 Tokyo Night 主题色调搬进终端提示符用“渐变蓝紫色块 分节箭头”的 Powerline 风格重绘了os、directory、git_branch等十余个内置模块。读完本文你将掌握这条配置的全部模块含义与写法原理能够一键套用、按需裁剪并能通过源码理解starship preset命令从“内置 TOML 打包”到“写入配置文件”的完整链路。本文的阐述对象为 docs/fr-FR/presets/tokyo-night.md其英文原版见 docs/presets/tokyo-night.md实际生效的完整配置存放在 docs/public/presets/toml/tokyo-night.toml是 Starship 所有本地化文档共用的一份构建期资源。预置是什么一份内置于 Starship 的完整配色 TOMLStarship 的“预置”preset是一份可直接覆盖用户配置的starship.toml。它不引入任何自定义二进制或脚本纯粹通过对内置模块的format、style、symbol等键进行显式赋值来彻底改变提示符观感。Tokyo Night 预置的灵感来自开源的 tokyo-night-vscode-theme 配色主题整体呈“亮紫lavender→ 蓝 → 藏青 → 近黑”的递进阶梯因此它天然适配深色终端与 Nerd Font 的几何符号。该预置在 docs/presets/README.md 的预置集合页中与 Bracketed Segments、Pure、Pastel Powerline、Gruvbox Rainbow、Catppuccin Powerline 等一并列出其中 Gruvbox Rainbow 正是“深受 Pastel Powerline 与 Tokyo Night 启发”的后继预置可见本配置还承担着展示 Starship“路径替换 模块自定义样式”范例的作用。下图即该预置在真实终端中的渲染效果来自仓库截图 docs/public/presets/img/tokyo-night.png启用前置条件必须启用 Nerd FontTokyo Night 预置的画面由以下几类元素构成它们都依赖字体字符集模块块左右两侧的分节箭头 / 几何切角符号连接字符如属于 Powerline 风格扩展字形操作系统、文件目录、Git 分支、各语言运行时等模块使用的图标字形路径替换中用于指代 Documents、Downloads 等文件夹的彩色图标字形。因此启用前唯一且强制的准备是在终端中安装并启用一款Nerd Font推荐使用已打补丁的等宽字体并在终端模拟器设置中选择该字体。若使用普通字体上述符号将退化为乱码或空方块整个配色布局也会失效。快速启用一行命令写入内置预置确认字体就绪后在终端里执行官方文档给出的启用命令starship preset tokyo-night -o ~/.config/starship.toml命令解读starship presetStarship 提供的预置子命令其参数与语义对应源码 src/print.rs 中的preset_command(name, output, force, list)tokyo-night要写入的内置预置名命名与打包该预置的 TOML 文件名不含.toml后缀一一对应-o ~/.config/starship.toml将输出原子写入到指定的用户配置文件路径在 macOS/Linux 上即全局配置~/.config/starship.toml。若省略-o预置内容会直接打印到标准输出stdout可先预览再自行重定向。几点实操提示若~/.config/starship.toml已存在你自己的配置直接覆盖前请先备份。从源码看写入动作通过write_file_atomic完成且是否允许覆盖取决于force参数——仓库中对应测试用例 src/print.rs 验证了“目标文件已存在时必须带强制选项”的行为。可以通过starship preset --help查看当前版本支持的参数写法。想了解当前版本内置了哪些预置可运行starship preset --list结果来自二进制中实际打包的预置清单见下文“底层实现”。想恢复 Starship 默认外观删除该配置文件或将其改名留档并重开终端即可——Starship 在无配置时使用内置默认值。需要手动微调时可先把内置内容导出到临时文件再编辑starship preset tokyo-night -o tokyo-night.toml配置全貌仓库内置 TOML 原文下文是该预置的完整配置原文与仓库文件 docs/public/presets/toml/tokyo-night.toml 逐字节一致该文件同时被官方文档页直接内嵌展示也可作为下载源$schema https://starship.rs/config-schema.json format [░▒▓](#a3aed2)\ $os\ \ $directory\ \ $git_branch\ $git_status\ \ $nodejs\ $bun\ $rust\ $golang\ $php\ \ $time\  \ \n$character [directory] style fg:#e3e5e5 bg:#769ff0 format $path truncation_length 3 truncation_symbol …/ [directory.substitutions] Documents Downloads  Music Pictures [git_branch] symbol  style bg:#394260 format [ $symbol $branch ]($style) [git_status] style bg:#394260 format [($all_status$ahead_behind )]($style) [jj_bookmark] symbol  style bg:#394260 format [ $symbol $bookmark($remote)$diverged( \\($overflow_count others\\)) ]($style) [nodejs] symbol  style bg:#212736 format [ $symbol ($version) ]($style) [bun] symbol  style bg:#212736 format [ $symbol ($version) ]($style) [rust] symbol  style bg:#212736 format [ $symbol ($version) ]($style) [golang] symbol  style bg:#212736 format [ $symbol ($version) ]($style) [php] symbol  style bg:#212736 format [ $symbol ($version) ]($style) [time] disabled false time_format %R # Hour:Minute Format style bg:#1d2230 format [ $time ]($style) [os] style bg:#a3aed2 fg:#090c0c format $symbol disabled false [os.symbols] Windows Ubuntu SUSE  Raspbian Mint Macos Manjaro  Linux Gentoo Fedora Alpine  Amazon  Android  AOSC  Arch Artix EndeavourOS  CentOS  Debian Redhat RedHatEnterprise Pop 这份配置看似“长”结构上其实只有三大块一段全局format声明色彩骨架若干模块对format/style/symbol的局部覆盖以及os.symbols的多发行版图标映射。布局设计两行提示符与分节色彩过渡全局 format两行结构顶层format是一段 TOML 多行字符串。Starship 渲染时按顺序逐 token 展开模块因此行的顺序即屏幕上模块出现的顺序第一行信息行装饰符░▒▓、os、directory、git_branch、git_status、nodejs、bun、rust、golang、php、time第二行单独的$character即默认的普通命令提示符会依据上一条命令退出码着色。多行字符串里每行末尾的\是行连接符用来吞掉真实换行防止多行字符串物理换行被当成空格或换行渲染而\n$character处故意保留换行从而让$character落到独立的第二行。$character位于整个第二行的最左侧为输入命令留出足够空间。分节箭头两段式着色的“斜切”技巧Starship 的每个模块只会渲染自己那块“纯色矩形”。要做出 Powerline 风格的斜切分节效果预置在全局 format 中把分节符当作独立文本 token 插入模块之间并给每个 token 指定前后两种颜色例如$os\ \ $directory\以os与directory之间的箭头为例os模块块的背景是亮紫#a3aed2紧随其后的箭头 token 的背景色被设为下一模块directory的蓝色#769ff0前景色却被设为上一模块的紫色#a3aed2。渲染后该字符在蓝底上“向前”画出一个紫色箭头尖角视觉上就像紫色块向右上方斜切出一角、露出下层蓝色块。由此整行按“紫 → 蓝 → 藏青 → 深蓝 → 近黑”逐级斜切递进构成 Tokyo Night 标志性的层叠色带。对应到实际色值整条信息行的底色阶梯为位置模块内容块背景色行首装饰░▒▓文字本身用紫色不带背景终端默认底色第 1 块os#a3aed2亮紫前景近黑#090c0c第 2 块directory#769ff0亮蓝文字#e3e5e5第 3 块git_branchgit_status#394260藏青文字#769ff0第 4 块nodejs/bun/rust/golang/php#212736深蓝文字#769ff0第 5 块time#1d2230近黑文字#a0a9cb注意git_status后面并没有紧跟分节符它和git_branch共用同一块藏青背景视觉上被合并成一个分区time结束后还有一段“只有前景色#1d2230、带一个空格”的收尾箭头用于把最右端截出一个干净的深色尖角。此外末尾分节符 token 前没有逗号之类的文本Starship 会自动跳过渲染结果完全为空的模块因此未命中 Git 仓库或语言工具链时对应模块不会留下空洞。逐模块剖析每个键在做什么directory路径显示与“文件夹图标替换”[directory] style fg:#e3e5e5 bg:#769ff0 format $path truncation_length 3 truncation_symbol …/format $path $style引用模块自身的style即“白字 蓝底”首尾的空格给路径留出内边距使文字不贴边。truncation_length 3路径过长时只保留末尾 3 层目录truncation_symbol …/指定被截断部分的折叠标记即“省略号加斜杠”长路径如/very/long/path/to/project/src会被压成…/project/src这类短形态。[directory.substitutions]这是 Starship 的目录名替换功能——命中指定名字的目录时把目录名替换成对应图标字符替换发生在截断逻辑之前。本预置注册了四个常用用户目录目录名替换图标含义Documents文档图标文档目录Downloads下载图标下载目录Music音乐图标音乐目录Pictures图片图标图片目录该机制与另一官方预置 Pastel Powerline 展示的能力同源是 Starship 里给“家目录/项目根”这类固定名称注入图标的标准做法。git_branch / git_status / jj_bookmarkGit 与 Jujutsu 状态区三个 VCS 模块共用藏青背景#394260文字统一为蓝色#769ff0[git_branch] symbol  format [ $symbol $branch ]($style)git_branch用 Git 图标替换默认的符号format只渲染“图标 分支名”两侧留空格嵌套的[...]($style)语法表示先用内层样式蓝字藏青底渲染图标与分支名再整体套用外层模块样式。git_status只显示$all_status如✚、✖、?等文件变更标记与$ahead_behind领先/落后上游的⇡/⇣计数并将二者包裹在圆括号中工作区干净时结果为空模块自动不渲染。jj_bookmark面向 Jujutsujj版本控制用书签图标与 Git 图标同款字形展示$bookmark、可选的$remote远端标识、$diverged分歧状态并在存在额外分叉书签时以(N others)形式输出$overflow_count。从 src/configs/jj_bookmark.rs 与 src/configs/git_branch.rs 等配置定义可以确认这些变量名与模块内置格式变量的占位符完全对应预置只是重排并着色。nodejs / bun / rust / golang / php语言运行时版本区五个语言模块被塞进同一个深蓝底#212736色块写法高度一致[nodejs] symbol  style bg:#212736 format [ $symbol ($version) ]($style)要点每个模块只在对应工具链上下文中显示例如nodejs通常在存在 Node 项目标志如package.json时渲染rust在存在Cargo.toml时渲染golang在存在go.mod/Go 源码时渲染。预置不改变内置的探测规则只覆盖图标、字号样式与版本格式——版本号被蓝色高亮并用圆括号包裹($version)。配置节名golang与模块实现文件 src/modules/golang.rs、src/configs/golang.rs 一一对应若你的项目还用 Dart、Python、Ruby 等其他运行时可按同样[ $symbol ($version) ]($style)模板复制粘贴即可加入色带。time重新启用时钟并设为 24 小时制Starship 的time模块默认是disabled true不显示预置显式将其打开[time] disabled false time_format %R # Hour:Minute Format style bg:#1d2230 format [ $time ]($style)time_format %R是 strftime 的“时:分”格式即 24 小时制HH:MM例如18:07符合注释 “Hour:Minute Format”。图标与时间文本使用较柔和的灰蓝#a0a9cb配近黑底#1d2230作为整行最深、最不抢眼的一环也把右端视觉重量压住。os系统图标块与多发行版映射[os] style bg:#a3aed2 fg:#090c0c format $symbol disabled falseStarship 默认不渲染os模块此处同样显式disabled false。format $symbol 在亮紫底上用近黑前景画出操作系统图标作为整行最左侧的“头块”。[os.symbols]把各操作系统的检测名映射到对应 Nerd Font 图标。表中已覆盖Windows / Ubuntu / SUSE / Raspbian / Mint / macOS / Manjaro / Linux / Gentoo / Fedora / Alpine / Amazon / Android / AOSC / Arch / Artix / EndeavourOS / CentOS / Debian / Redhat / RedHatEnterprise / Pop等 22 个条目检测不到具体发行版时会回退到通用Linux图标。多发行版场景如 WSL、容器下该表可自行增补。底层实现starship preset的内置预置打包链路Tokyo Night 预置之所以能“一行命令写进配置文件”是因为其 TOML 在编译期被直接内嵌进 starship 二进制构建阶段build.rs的gen_presets_hook会扫描 docs/public/presets/toml 目录下所有*.toml按文件名排序后为每个文件生成一条print::Preset(name)记录和一条name include_str!(...toml绝对路径)的匹配分支——这意味着仓库里每个toml文件都对应一个可用的内置预置名例如tokyo-night.toml对应tokyo-night生成的代码通过shadowshadow-rs 构建工具并入二进制提供get_preset_list()与get_preset_content(name)两个入口见 src/lib.rs、src/print.rs运行时preset_command先按名称取出内嵌内容再把内容以原子写文件的方式输出存在-o时写入目标路径是否允许覆盖受force参数控制否则打印到标准输出对应实现位于 src/print.rs仓库测试 src/print.rs 还覆盖了“预置清单非空”“每个预置都能正常渲染”“写入文件内容与include_str!内嵌内容逐字节一致”“覆盖已存在文件需要 force”等行为。因此你可以放心starship preset tokyo-night得到的配置与你从仓库下载 docs/public/presets/toml/tokyo-night.toml 得到的内容完全一致官方文档页含法语版 docs/fr-FR/presets/tokyo-night.md内嵌展示的也正是这一份文件。二次定制指南拿到手后最常见的三类改造换主色调整条色带的“灵魂”是 5 个背景色与前景的配对关系。想改成暖色系只需同步替换上文色阶表中的色值并保证每个模块style/内层fg/相邻分节符三处的颜色对得上否则分节箭头会出现色差“断档”。增减模块把语言运行时区内的任意一行模块覆盖如[python]复制一份并修改节名与图标即可加入反之删除format中对应的$模块名行与所属模块节即可从提示符中移除。注意format里模块行与分节符行是交替出现的删模块时要把相邻的分节符一并处理。改路径与目录图标调整directory的truncation_length、truncation_symbol或在[directory.substitutions]中为更多目录如Projects、src追加图标项。关联阅读预置总览与社区提交流程见 docs/presets/README.md法语本地化版本见 docs/fr-FR/presets/README.md各语言目录结构一致同系列的 Powerline 风格预置中Gruvbox Rainbow 与 Catppuccin Powerline 都基于本配置的分节手法换皮可对照阅读以掌握色彩变量化的思路Starship 的模块配置项与格式变量语法format、style、symbol、替换表等的完整参考见 docs/config/README.md 与 docs/advanced-config/README.md。【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考