我用了很长一段时间的 Powerlevel10k(p10k)。
它几乎是 Zsh 生态里最强的 prompt 主题:快、信息密度高、配置也不算复杂。对大多数人来说,它已经是“终点方案”。
但我还是换成了 Starship。
关于p10k
- 开箱即用的配置向导(p10k configure)
- 几乎没有性能损耗
- Git 状态、语言版本、执行结果,一目了然
- 和 Oh My Zsh 完美融合
但为啥会还是替换成了 starship
因为fnm和nvm的 node自动切版本
真正让我放弃 p10k 的原因:Node 版本切换带来的“噪音”
用p10k的用户一定对p10k的启动警告不陌生。一旦在p10k启动时终端有信息输出就一定会收到p10k的一大段警告。
当然这个警告是可以关闭的。但是关闭的代价就是真的发生异常那就也都无法得知了。
所以强迫症的我决定。。。把p10k换了!
starship 功能相比p10k要弱一些,所以也就没有过度绑定 shell 行为。它不会试图接管整个终端体验。
但是用久了p10k,已经习惯了它的交互界面,很简单,starship的配置非常的模块化、插件化

这是我的starship的交互界面,不能说100%还原p10k吧,至少七八成是有了
既然都说到这里了,那就分享一下我的配置内容
"$schema" = 'https://starship.rs/config-schema.json'
format = """
$shell\
[ ](fg:color_green bg:#DB3943)\
$os\
$username\
[](fg:#DB3943 bg:#EAE5E5)\
$directory\
[](fg:#EAE5E5 bg:#33658A)\
$git_branch\
$git_status\
[](fg:#33658A bg:#06969A)\
$docker_context\
$conda\
$pixi\
[](bold fg:#06969A)\
$fill\
[](fg:#9A348E)\
$cmd_duration\
[](fg:color_yellow bg:#9A348E)\
$c\
$cpp\
$rust\
$golang\
$php\
$java\
$kotlin\
$haskell\
$python\
$nodejs\
$bun\
$deno\
[](fg:#000000 bg:color_yellow)\
$package\
[](fg:color_bg1)\
$time\
$line_break$character\
"""
palette = 'gruvbox_dark'
[palettes.gruvbox_dark]
color_fg0 = '#fbf1c7'
color_bg1 = '#3c3836'
color_bg3 = '#665c54'
color_blue = '#458588'
color_aqua = '#689d6a'
color_green = '#8ee668'
color_orange = '#d65d0e'
color_purple = '#b16286'
color_red = '#cc241d'
color_yellow = '#d79921'
[fill]
symbol = '-'
style = "bold fg:color_bg1"
[os]
disabled = false
style = "fg:#FFFFFF bg:#DB3943"
[os.symbols]
Windows = ""
Ubuntu = ""
SUSE = ""
Raspbian = ""
Mint = ""
Macos = ""
Manjaro = ""
Linux = ""
Gentoo = ""
Fedora = ""
Alpine = ""
Amazon = ""
Android = ""
AOSC = ""
Arch = ""
Artix = ""
EndeavourOS = ""
CentOS = ""
Debian = ""
Redhat = ""
RedHatEnterprise = ""
Pop = ""
[username]
show_always = true
style_user = "fg:#FFFFFF bg:#DB3943"
style_root = "fg:#FFFFFF bg:#DB3943"
format = '[ $user ]($style)'
[shell]
disabled = false
style = "fg:color_bg1 bg:color_green"
format = '[$indicator]($style)'
[directory]
style = "fg:#000000 bg:#EAE5E5"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
[directory.substitutions]
"Documents" = " "
"Downloads" = " "
"Music" = " "
"Pictures" = " "
"Developer" = " "
[cmd_duration]
min_time = 0
style = "bg:#9A348E"
format = '[ [$duration ](bg:#9A348E)]($style)'
[git_branch]
symbol = ""
style = "bg:#33658A"
format = '[[ $symbol $branch ](bg:#33658A)]($style)'
[git_status]
style = "bg:#33658A"
format = '[[($all_status$ahead_behind )](bg:#33658A)]($style)'
[package]
symbol = ""
style = ""
format = "[ $symbol( $version)](bold) "
[nodejs]
symbol = ""
style = "bg:color_blue"
# style = "bg:color_yellow fg:color_red"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[bun]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[deno]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[c]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[cpp]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[rust]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[golang]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[php]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[java]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[kotlin]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[haskell]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[python]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_red bg:color_yellow bold italic)]($style)'
[docker_context]
symbol = ""
style = "bg:#06969A"
format = '[[ $symbol( $context) ](bg:#06969A)]($style)'
[conda]
style = "bg:#06969A"
format = '[[ $symbol( $environment) ](bg:#06969A)]($style)'
[pixi]
style = "bg:#06969A"
format = '[[ $symbol( $version)( $environment) ](bg:#06969A)]($style)'
[time]
disabled = false
time_format = "%F %T"
style = "bg:color_bg1"
format = '[[ $time ](fg:color_fg0 bg:color_bg1)]($style)'
[line_break]
disabled = false
[character]
disabled = false
success_symbol = '[](bold fg:color_green)'
error_symbol = '[](bold fg:color_red)'
vimcmd_symbol = '[](bold fg:color_green)'
vimcmd_replace_one_symbol = '[](bold fg:color_purple)'
vimcmd_replace_symbol = '[](bold fg:color_purple)'
vimcmd_visual_symbol = '[](bold fg:color_yellow)'