Starship Pastel Powerline 整理文档
本文适合想深入理解或定制 Starship Pastel Powerline 预设的用户。你会学到:预设的快速安装方式、完整配置逐模块解析、配色说明,以及接入现有 zsh 环境的建议与验证方法。
本文根据 Starship 官方 Pastel Powerline 预设页面整理,补充了可直接使用的命令和配置,适合直接套用到本机 starship 环境。
官方页面:
1. 预设简介
Pastel Powerline 是 Starship 官方提供的社区预设之一。
这个预设的特点很明确:
- 使用柔和的粉彩配色
- 采用
powerline风格的连续分段提示符 - 在不同模块之间用彩色分隔符连接
- 演示了
directory.substitutions的路径替换能力
官方说明里提到,这个预设的灵感来自 M365Princess。
2. 前置要求
这个预设依赖 Nerd Font 图标字体。
如果终端没有启用 Nerd Font,你会看到方块、乱码,或者分隔符和图标显示异常。官方页面给出的示例字体是:
Caskaydia Cove Nerd Font
你也可以使用其他 Nerd Font,例如:
JetBrainsMono Nerd FontMesloLGS Nerd FontHack Nerd Font
如果你还没安装字体,可以参考你现有的文档:
3. 快速安装方式
官方推荐的应用方式是直接用 Starship 生成预设配置:
starship preset pastel-powerline -o ~/.config/starship.toml
如果你想先查看内容,不直接覆盖配置,可以执行:
starship preset pastel-powerline
如果你当前已经有 ~/.config/starship.toml,建议先备份:
cp ~/.config/starship.toml ~/.config/starship.toml.bak 2>/dev/null
4. 完整配置
下面是 starship preset pastel-powerline 生成的完整配置:
"$schema" = 'https://starship.rs/config-schema.json'
format = """
[](#9A348E)\
$os\
$username\
[](bg:#DA627D fg:#9A348E)\
$directory\
[](fg:#DA627D bg:#FCA17D)\
$git_branch\
$git_status\
[](fg:#FCA17D bg:#86BBD8)\
$c\
$elixir\
$elm\
$golang\
$gradle\
$haskell\
$java\
$julia\
$nodejs\
$nim\
$rust\
$scala\
[](fg:#86BBD8 bg:#06969A)\
$docker_context\
[](fg:#06969A bg:#33658A)\
$time\
[ ](fg:#33658A)\
"""
# Disable the blank line at the start of the prompt
# add_newline = false
# You can also replace your username with a neat symbol like or disable this
# and use the os module below
[username]
show_always = true
style_user = "bg:#9A348E"
style_root = "bg:#9A348E"
format = '[$user ]($style)'
disabled = false
# An alternative to the username module which displays a symbol that
# represents the current operating system
[os]
style = "bg:#9A348E"
disabled = true # Disabled by default
[directory]
style = "bg:#DA627D"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
# Here is how you can shorten some long paths by text replacement
# similar to mapped_locations in Oh My Posh:
[directory.substitutions]
"Documents" = " "
"Downloads" = " "
"Music" = " "
"Pictures" = " "
[c]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[cpp]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[docker_context]
symbol = " "
style = "bg:#06969A"
format = '[ $symbol $context ]($style)'
[elixir]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[elm]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[git_branch]
symbol = ""
style = "bg:#FCA17D"
format = '[ $symbol $branch ]($style)'
[git_status]
style = "bg:#FCA17D"
format = '[$all_status$ahead_behind ]($style)'
[golang]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[gradle]
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[haskell]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[java]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[julia]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[nodejs]
symbol = ""
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[nim]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[rust]
symbol = ""
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[scala]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[time]
disabled = false
time_format = "%R"
style = "bg:#33658A"
format = '[ ♥ $time ]($style)'
5. 提示符结构说明
这个预设的提示符从左到右大致分成几段:
- 系统/用户区
- 当前目录区
- Git 信息区
- 编程语言运行时区
- Docker 上下文区
- 时间区
具体对应关系如下:
- 第一段:
$os+$username - 第二段:
$directory - 第三段:
$git_branch+$git_status - 第四段:语言模块,如
c、golang、java、nodejs、rust - 第五段:
$docker_context - 第六段:
$time
整体使用 、 这类 powerline 分隔符把每个模块连成一个连续色带。
6. 配色说明
该预设主要使用这几组颜色:
#9A348E:用户/系统段#DA627D:目录段#FCA17D:Git 段#86BBD8:语言运行时段#06969A:Docker 段#33658A:时间段
视觉上属于偏柔和的粉彩风格,不像很多 powerline 主题那样强烈或高对比。
7. 关键模块说明
7.1 username
show_always = true- 总是显示用户名
- 普通用户和 root 都使用同样背景色
如果你觉得用户名占空间,可以改成:
[username]
show_always = false
7.2 os
当前预设里:
[os]
disabled = true
也就是说系统图标模块默认关闭。
如果你想显示操作系统图标,可改成:
[os]
style = "bg:#9A348E"
disabled = false
7.3 directory
目录模块做了两件事:
- 最多显示 3 级路径
- 把常见目录名替换成图标
配置如下:
truncation_length = 3
truncation_symbol = "…/"
路径替换示例:
Documents->Downloads->Music->Pictures->
这也是官方页面特别提到的一个演示点。
7.4 Git 模块
Git 信息由两部分组成:
git_branchgit_status
效果包括:
- 显示当前分支名
- 显示文件状态和 ahead/behind 信息
7.5 语言运行时模块
这套预设会在检测到对应项目时显示语言和版本,例如:
CC++ElixirElmGoGradleHaskellJavaJuliaNode.jsNimRustScala
如果你不想显示这么多语言模块,可以删除不需要的模块,或者从 format 里移除对应变量。
7.6 time
时间模块默认开启:
[time]
disabled = false
time_format = "%R"
format = '[ ♥ $time ]($style)'
这里 %R 表示 小时:分钟 格式。
如果你不想显示时间,可以改成:
[time]
disabled = true
8. 适合什么场景
这个预设比较适合:
- 终端需要兼顾美观和信息密度
- 经常在 Git 仓库里工作
- 经常切换多种语言项目
- 希望提示符风格统一且辨识度高
如果你更偏爱极简风格,这个预设可能会显得信息有点多。
9. 建议的本地化调整
你当前环境已经使用 starship,如果要把这个预设接入你自己的 zsh 配置,建议这样处理:
- 先备份现有
~/.config/starship.toml - 先运行
starship preset pastel-powerline > /tmp/pastel-powerline.toml观察效果 - 再决定是全量替换,还是只拷贝其中的颜色、目录、时间模块
对于你的环境,我更建议优先改这几个点:
- 打开
os模块,方便区分系统环境 - 根据自己的开发栈删除不用的语言模块
- 保留
directory.substitutions - 保留
git_branch、git_status和time
10. 应用后验证
应用配置后,执行:
source ~/.zshrc
或者重新打开终端。
然后检查:
- 分隔符是否正常显示
- 图标是否正常显示
- Git 仓库里是否显示分支信息
- 在 Node、Rust、Java 等项目目录中是否显示对应版本
- 时间模块是否出现在提示符末尾
11. 常见问题
11.1 分隔符显示成方块
通常是 Nerd Font 没有安装或终端没有启用该字体。
11.2 提示符太长
可以删除以下任意模块:
usernameos- 部分语言模块
docker_contexttime
11.3 没有显示语言版本
Starship 只有在检测到对应项目或工具链时才会显示相关模块,这属于正常行为。
12. 总结
Pastel Powerline 本质上是一套偏柔和风格的高信息密度提示符方案。
它的重点不只是"好看",还包括:
- 用颜色区分不同信息区域
- 用 powerline 分段提升提示符可读性
- 用路径替换简化长目录显示
- 用语言模块和 Git 模块增强开发场景下的反馈
如果你想直接使用,最简单的方式就是:
starship preset pastel-powerline -o ~/.config/starship.toml
如果你想定制,建议先保留它的整体结构,再逐步删减不需要的模块。