Starship Tokyo Night 预设:为任意 Shell 打造夜航蓝紫风 Powerline 提示符
Starship Tokyo Night 预设为任意 Shell 打造夜航蓝紫风 Powerline 提示符【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship本文以 Starship 官方仓库中的 Tokyo Night 预设文档英文原文本仓库多语言镜像见 docs/pl-PL/presets/tokyo-night.md为骨架结合仓库内置的完整预设配置与源码实现讲解如何安装、理解并二次定制这一社区预设。读完本文你将掌握starship preset命令的完整用法、Tokyo Night 配色的分块结构与每一行 TOML 的含义并能基于内置模块轻松改出属于自己的配色方案。预设是什么社区提交的配色配置集合Starship 官方仓库在 docs/presets/README.md 中维护了一套「社区预设Presets」它们不是独立的代码模块而是由社区成员提交、随仓库文档一起发布的一组组现成starship.toml配置片段。每个预设对应一份独立的说明页面与截图例如 Nerd Font Symbols、No Nerd Fonts、Pastel Powerline、Gruvbox Rainbow、Catppuccin Powerline 等。Tokyo Night 就是其中之一它的配色灵感来自同名 VS Code 配色主题 tokyo-night-vscode-theme目标是把编辑器里那种低饱和度的深蓝紫「夜航」色调延伸到终端提示符上。预设对应的完整配置存放于 docs/public/presets/toml/tokyo-night.toml其文档说明、下载链接与预览截图则统一维护在 docs/presets/tokyo-night.md并翻译成多国语言如波兰语版本 tokyo-night.md。本文引用的所有相对路径均从仓库根目录出发。前置条件终端必须启用 Nerd FontTokyo Night 预设对字体有硬性要求你需要先在系统里安装一款 Nerd Font并在终端模拟器的设置中把它启用为当前字体。原因很直观——查看下面的完整配置会发现预设大量使用了 Nerd Font 字库中的特殊字形与图标包括Powerline 分段箭头字形UE0B4用于制造不同色块间的斜切过渡目录替换用图标、、、等各运行时图标与 Git 分支图标、、、、等。如果终端没有使用 Nerd Font这些字形会退化为方框tofu或普通字符提示符的视觉效果将完全丧失。即使 Nerd Font 已安装也务必在终端模拟器的偏好设置中显式选中它——只替换系统字体、不修改终端字体配置是不够的。若你希望完全不依赖 Nerd Font仓库还提供了 No Nerd Fonts 预设 供参考。一键应用starship preset命令用法Tokyo Night 说明文档给出的核心安装命令只有一行starship preset tokyo-night -o ~/.config/starship.toml其效果是从编译进 Starship 二进制内的预设清单中取出名为tokyo-night的预设内容并写入~/.config/starship.toml作为你的用户配置。该子命令的参数定义位于 src/main.rs完整可用形式如下参数含义starship preset tokyo-night将预设内容打印到标准输出不写文件可配合 shell 重定向手动控制输出位置-o, --output 文件路径将预设写入指定文件而非标准输出如~/.config/starship.toml-f, --force目标文件已存在时强制覆盖必须与-o配合使用-l, --list列出当前二进制内置的所有预设名称便于确认你的版本包含 Tokyo Night例如先用--list确认预设可用再以非覆盖方式查看内容starship preset --list starship preset tokyo-night写入与覆盖行为由 src/print.rs 中的preset_command实现有output时调用crate::utils::write_file_atomic(output, content, force)原子写入未指定output时则把内容写到 stdout。这意味着当目标文件已存在且未加-f时写入会失败避免你无意中覆盖手头已有的自定义配置——如果你已经写过自己的starship.toml建议先备份再执行。同样可以手动把预设重定向到配置文件效果等价于上面的-o写法starship preset tokyo-night ~/.config/starship.toml说明~/.config/starship.toml是 Unix 系 Shell 的默认用户配置路径若你设置了STARSHIP_CONFIG环境变量指向自定义路径则上面的目标路径应相应替换。应用后新开一个终端窗口或执行exec $SHELL即可看到效果。预设内容也可以直接以文件形式获取仓库内的 docs/public/presets/toml/tokyo-night.toml 即其原始配置可作离线备份或人工审阅。完整配置逐段拆解Tokyo Night 预设的完整 TOML 内容如下出自 docs/public/presets/toml/tokyo-night.toml共约 106 行。它没有改动任何模块的探测逻辑与默认行为之外的内容全部精力都花在「配色 布局」上因此非常适合作为学习 Starshipformat字符串与样式语法的范本。$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 1. 顶层format决定整条提示符的骨架Starship 的顶层format字符串以$开头的变量引用各内置模块模块之间允许用任意文本与带样式的片段连接从而实现高度自定义的「Powerline 式」分段提示符。Tokyo Night 的做法可概括为一条五级背景色渐变阶梯每个层级之间用一个的箭头片段衔接从而把相邻色块的边界切成平滑斜线。显示阶段模块背景色文本/前景色段首渐变装饰░▒▓$os#a3aed2#090c0c目录段$directory#769ff0#e3e5e5Git 段$git_branch、$git_status#394260#769ff0运行时段$nodejs、$bun、$rust、$golang、$php#212736#769ff0收尾段$time#1d2230#a0a9cb观察其中的分隔片段写法第一段起始用[░▒▓](#a3aed2)画出一个与os同底色的渐变装饰目录段结束后用进入 Git 段的#394260背景之后的每个$runtime模块背景相同#212736因此运行时图标与版本在视觉上连成一块全部置于深色区域。这段format还透露出一个重要设计取舍只有当工作目录检测到对应运行时nodejs/bun/rust/golang/php时才渲染相应片段——Starship 各模块本身就有「未检测到对应工具链则静默不显示」的机制所以format中罗列多个运行时是安全且常见的写法。若你还希望显示其他语言如 Python、Java需在对应位置自行加入$python、$java等模块变量仓库源码 src/configs/mod.rs 中按顺序定义了全部内置模块。$character负责在换行后绘制输入提示符。2.[directory]路径目录段directory模块被配置为亮蓝色块#769ff0浅色文字#e3e5e5format $path 只用$path变量而非默认的$path$read_only等组合truncation_length 3长路径最多从当前目录往回保留 3 级再深的部分交给truncation_symbol省略truncation_symbol …/用省略号加斜杠表示被截断的上级路径。[directory.substitutions]表则把常见顶层目录名替换为对应语义的图标Documents 等。这是 Starship 目录替换功能的典型用法——替换规则按目录名精确匹配适用于把固定工作目录显示为图标或简称的场景。若目录层级较深配合truncation_length 3提示符会优先保留当前目录层级。3.[git_branch]与[git_status]Git 状态段Git 段处于中间色阶#394260其文本通过内层嵌套样式fg:#769ff0呈现为亮蓝与目录段的#769ff0呼应symbol 分支图标取自 Nerd Fontformat [ $symbol $branch ]($style)外层$style兜底整个段背景内层方括号单独覆盖前景色git_status的$all_status展示未提交/未跟踪等状态摘要$ahead_behind展示与远端分支的领先/落后计数。仓库还顺带为 Jujutsu 版本控制用户预置了[jj_bookmark]样式与 git_branch 完全一致。从源码结构看它对应 Starship 对 Jujutsu 书签的支持若你使用jj并在format中加入$jj_bookmark即可沿用同一配色。4.$nodejs/$bun/$rust/$golang/$php运行时版本段五个运行时模块共用同一套模板背景#212736、图标各自取自 Nerd Font、格式均为[ $symbol ($version) ]($style)。它们的共同点是只在当前目录存在对应工具链时才出现因此深色区域可能显示一个、多个或全部运行时图标。该块是 Tokyo Night 预设「无打扰」理念的集中体现——不需要的版本信息不会占位。5.[time]与[os]两侧的细节模块time与os在 Starship 默认配置中通常处于关闭状态此处都显式置为disabled false[time]time_format %R输出 24 小时制的小时:分钟注释# Hour:Minute Format也点明了这一点显示在整条提示符最深的#1d2230色块上文字为灰蓝#a0a9cb图标为时钟[os]在段首#a3aed2浅紫色块上绘制系统图标文字#090c0c近黑色保证对比度[os.symbols]表为各操作系统逐一指定了图标字形macOS、Arch、Ubuntu、Debian、Windows 等均有覆盖。从源码看预设的编译与分发机制Tokyo Night 预设的使用方式之所以如此简单是因为所有预设的 TOML 文件在编译 Starship 时就被直接嵌入二进制starship preset无需联网、无需额外资源目录即可输出。预设清单生成仓库根目录的 build.rs 定义了gen_presets_hook。构建时它会读取docs/public/presets/toml/目录下每个*.toml文件按文件名去掉.toml后缀生成get_preset_list()——返回全部预设名数组Tokyo Night、Gruvbox Rainbow 等 12 个社区预设都在其中get_preset_content(name)——用include_str!把每个 TOML 内容在编译期嵌入源码构成tokyo-night include_str!(...toml 路径)的匹配分支。同时打印cargo:rerun-if-changeddocs/public/presets/toml保证新增或修改预设后会触发重新构建。CLI 参数解析src/main.rs 中Preset子命令的name字段声明为value_enum类型print::Preset其合法取值正是运行时由shadow::get_preset_list()提供的预设名。命令执行src/print.rs 的preset_command收到-l时打印预设名列表否则调用get_preset_content取得内容按是否指定-o分别走原子写文件或标准输出。对应测试src/print.rs验证了预设列表非空、默认输出不 panic、-o写文件内容与docs/public/presets/toml/*.toml完全一致以及已有文件需force才可覆盖等行为。上述实现细节意味着预设列表由你当前安装的 Starship 版本决定——若版本过旧--list中可能没有tokyo-night而无论版本新旧文中提供的完整 TOML 都可以作为配置文件直接使用。安装后的验证与常见问题排查确认配置已生效新开一个终端窗口或执行exec $SHELL重新加载提示符。若仍显示旧样式检查~/.config/starship.toml是否确实被写入也可用starship print-config查看最终生效的计算配置。出现方框/问号图标说明 Nerd Font 未安装或终端仍未启用它。请返回「前置条件」小节核对如果只是个别字符异常确认所选 Nerd Font 版本较新。覆盖自己已有配置失败preset -o在目标文件存在时默认拒绝写入需要显式加-f参见前文的参数表。从源码看这是 src/utils 中原子写入的force语义属于刻意为之的保护行为。按需微调从 Tokyo Night 到你的专属配色Tokyo Night 的模块拆分非常规整改造成其他主题非常容易。以下几条通用思路均可直接套用更换整条色带只需修改顶层format中各分隔片段与各模块style的十六进制色值。例如想把 Git 段从#394260换成青色#005757同步改[git_branch]、[git_status]、[jj_bookmark]的style以及前后两个[]分隔片段的bg/fg即可。增删模块在format中按需插入或移除$python、$java、$docker_context等变量并仿照现有运行时段为其补充一个带style、symbol、format的模块小节。调整省略深度把[directory]的truncation_length改为更大值以显示更长路径。修改时间格式将time_format换成%T含秒或%H:%M等任意 chrono 格式字符串。保留备份再覆盖应用官方预设前先把现有starship.toml复制一份之后再用-f覆盖避免丢失自定义内容。更多预设本预设是 docs/presets/README.md 社区预设集合中的一员。想横向对比配色或寻找灵感可继续阅读同一目录下的 Gruvbox Rainbow灵感同样来自 Tokyo Night 与 Pastel Powerline、Pastel Powerline同时展示目录替换进阶用法、Catppuccin PowerlineCatppuccin 色板以及无 Nerd Font 依赖的 No Nerd Fonts。这些说明页面均随仓库提供了多语言翻译与可直接复制的 TOML 文件。【免费下载链接】starship☄️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!项目地址: https://gitcode.com/GitHub_Trending/st/starship创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →