本页面提供了 Powerlevel10k 提示符视觉外观定制的全面指南。它涵盖了如何修改颜色、图标、分隔符和其他样式元素,以创建您理想的终端体验。有关创建具有新功能的自定义段的信息,请参阅 自定义段。
Powerlevel10k 通过其配置系统提供了强大的样式功能。样式定制主要通过在您的 ~/.p10k.zsh 配置文件中设置特定的 Zsh 变量来实现。
Powerlevel10k 中的样式参数遵循一致的命名模式。
POWERLEVEL9K_<SEGMENT>_<STYLE_ASPECT>
其中
<SEGMENT> 是提示符段的名称(例如 DIR、VCS、STATUS)。<STYLE_ASPECT> 定义了您正在定制的方面(例如 FOREGROUND、BACKGROUND、VISUAL_IDENTIFIER_EXPANSION)。对于具有不同状态或类别的段,模式会扩展到:
POWERLEVEL9K_<SEGMENT>_<STATE/CLASS>_<STYLE_ASPECT>
例如:POWERLEVEL9K_DIR_HOME_FOREGROUND
来源:config/p10k-lean.zsh209-342 config/p10k-classic.zsh217-347
Powerlevel10k 提示符由排列在行中的段组成,每行都有左侧和右侧。理解这种结构对于有效的定制至关重要。
来源:config/p10k-lean.zsh25-111 config/p10k-classic.zsh25-112
您可以使用 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS 和 POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS 数组来控制显示在提示符左右两侧的段。
要创建多行提示符,请在您想要换行的地方包含 newline 元素。
来源:config/p10k-lean.zsh25-111 config/p10k-classic.zsh25-112 config/p10k-rainbow.zsh25-111
颜色使用每个段的 FOREGROUND 和 BACKGROUND 样式方面进行设置。
typeset -g POWERLEVEL9K_DIR_FOREGROUND=31 # Sets text color
typeset -g POWERLEVEL9K_DIR_BACKGROUND=4 # Sets background color (if using a style with backgrounds)
颜色可以通过几种方式指定:
Powerlevel10k 包含一个有用的命令来查看可用颜色。
for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
来源:config/p10k-lean.zsh6 config/p10k-lean.zsh209-210 config/p10k-rainbow.zsh216-219
许多段具有不同的状态,每种状态都有不同的样式参数。
来源:config/p10k-lean.zsh343-505 config/p10k-rainbow.zsh356-504
每个段都可以使用 VISUAL_IDENTIFIER_EXPANSION 参数来设置图标或“视觉标识符”。
typeset -g POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='📁'
对于需要根据状态更改图标的段,您可以设置不同的扩展。
typeset -g POWERLEVEL9K_VCS_CLEAN_VISUAL_IDENTIFIER_EXPANSION='✓'
typeset -g POWERLEVEL9K_VCS_MODIFIED_VISUAL_IDENTIFIER_EXPANSION='!'
Powerlevel10k 通过 POWERLEVEL9K_MODE 参数支持不同的图标集。
typeset -g POWERLEVEL9K_MODE=nerdfont-complete
可用的模式包括:
nerdfont-complete:使用 Nerd Fonts,包含完整的图标集。awesome-fontconfig:使用 Font Awesome 图标。awesome-mapped-fontconfig:Font Awesome 附加映射。awesome-patched:用于带有 Font Awesome 图标的补丁字体。compatible:仅使用 ASCII 字符(适用于有限的字体支持)。来源:config/p10k-lean.zsh114-117 config/p10k-classic.zsh114-117
分隔符定义了段和子段之间的视觉边界。
使用以下方法配置它们:
# For prompts with different background colors
typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0' # Right-pointing solid triangle
typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2' # Left-pointing solid triangle
# For segments of the same color
typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0B1' # Right-pointing thin triangle
typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0B3' # Left-pointing thin triangle
对于“lean”样式(透明背景),通常使用不同的分隔符设置。
typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR=' ' # Simple space
typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR=' ' # Simple space
typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='' # No separator
typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='' # No separator
来源:config/p10k-classic.zsh166-175 config/p10k-lean.zsh121-124 config/p10k-rainbow.zsh163-172
对于多行提示符,您可以自定义行之间的连接器。
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='╭─'
typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='├─'
typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='╰─'
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='─╮'
typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='─┤'
typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='─╯'
这会在您的提示符周围创建一个框线绘制样式的框架。
来源:config/p10k-classic.zsh136-144 config/p10k-rainbow.zsh138-144
Powerlevel10k 通过 CONTENT_EXPANSION 参数提供广泛的内容自定义。这允许您精确控制显示在每个段中的文本。
# Customize directory truncation
typeset -g POWERLEVEL9K_DIR_CONTENT_EXPANSION='%~' # Standard Zsh prompt expansion
# More complex example for Git status
typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}'
许多段都有特定的格式参数。
# Truncate directory if it's longer than 80 characters
typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
# Show at most two decimals for command duration
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=2
来源:config/p10k-lean.zsh268 config/p10k-lean.zsh482-483 config/p10k-lean.zsh546
Powerlevel10k 允许定义目录类,以便根据路径模式应用不同的样式
目录类可以在您的配置文件中定义
typeset -g POWERLEVEL9K_DIR_CLASSES=(
'~/work(|/*)' WORK '' # Matches ~/work and all subdirectories
'~(|/*)' HOME '' # Matches ~ and all subdirectories
'*' DEFAULT '' # Matches everything else
)
# Then style each class
typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31
typeset -g POWERLEVEL9K_DIR_HOME_FOREGROUND=39
对于 kubecontext 和 terraform 等其他片段也存在类似的分类系统。
来源: config/p10k-lean.zsh289-342 config/p10k-classic.zsh298-347
Powerlevel10k 提供了三个内置样式模板,您可以将它们作为自定义的起点
极简风格采用极简主义方法,具有透明背景
# Basic style options that define the overall look of your prompt.
typeset -g POWERLEVEL9K_BACKGROUND= # transparent background
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol
来源: config/p10k-lean.zsh121-124
经典风格采用类似 powerline 的方法,具有彩色背景和三角形分隔符
# Default background color.
typeset -g POWERLEVEL9K_BACKGROUND=238
# Separator between same-color segments on the left.
typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='%246F\uE0B1'
# Separator between same-color segments on the right.
typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='%246F\uE0B3'
# Separator between different-color segments on the left.
typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0'
# Separator between different-color segments on the right.
typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2'
来源: config/p10k-classic.zsh163-175
彩虹风格为不同片段使用各种背景颜色
# Segment background colors for rainbow style
typeset -g POWERLEVEL9K_DIR_BACKGROUND=4
typeset -g POWERLEVEL9K_VCS_CLEAN_BACKGROUND=2
typeset -g POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=3
typeset -g POWERLEVEL9K_STATUS_OK_BACKGROUND=0
来源: config/p10k-rainbow.zsh217 config/p10k-rainbow.zsh356-359
不同字体的不同显示模式
# For Nerd Font users
typeset -g POWERLEVEL9K_MODE=nerdfont-complete
# For minimal ASCII-only compatibility
typeset -g POWERLEVEL9K_MODE=compatible
# Add an empty line before each prompt
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
# Connect left prompt lines with arrows
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%242F╭─'
typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%242F╰─'
# Use a custom character for prompt symbol
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_VIINS_CONTENT_EXPANSION='❯'
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_VIINS_CONTENT_EXPANSION='❯'
来源: config/p10k-lean.zsh139-145 config/p10k-classic.zsh138-144
# Shorten directory display
typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
# Use bold for anchor directories
typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
# Custom styling for ~/work directories
typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31
来源: config/p10k-lean.zsh213-230
创建您自己的自定义风格
~/.p10k.zsh)source ~/.p10k.zsh 来测试更改请记住,样式是可以混合搭配的 - 您可以从彩虹风格中获取片段颜色,从经典风格中获取分隔符,从极简风格中获取布局,从而创造出独特的东西。
来源: config/p10k-lean.zsh1-2 config/p10k-classic.zsh1-2 config/p10k-rainbow.zsh1-2
使用条件参数控制片段的出现时机
# Show kubecontext only when using kubectl commands
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx'
# Hide nordvpn status when disconnected
typeset -g POWERLEVEL9K_NORDVPN_DISCONNECTED_CONTENT_EXPANSION=
来源: config/p10k-lean.zsh1229 config/p10k-lean.zsh714-715
对于 Git 状态等复杂片段,您可以定义自定义格式化函数
function my_git_formatter() {
# Custom logic to format git status display
# ...
}
然后在您的内容扩展中使用此函数
typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}'
来源: config/p10k-lean.zsh359-462 config/p10k-lean.zsh482
如果您的自定义设置未按预期工作
POWERLEVEL9K_MODE 安装了合适的字体p10k configure 重置为默认设置,然后逐步添加自定义设置请记住,您可以通过运行 p10k configure 向导随时恢复到有效的配置。