此页面记录了Powerlevel10k中的图标系统和视觉元素,重点介绍了图标是如何定义、选择和显示在提示符中的。有关配置使用这些图标的提示符段的信息,请参阅配置系统。
Powerlevel10k拥有一个全面的图标系统,为您的提示符中的各种元素提供视觉指示,例如版本控制状态、操作系统、编程语言等。图标系统旨在适应不同的终端字体和用户偏好。
此系统的核心是一个名为 icons 的全局关联数组,其中包含图标名称与其对应字符之间的映射。这些图标根据所选的图标模式而变化,该模式由 POWERLEVEL9K_MODE 设置决定。
图标系统在提示符首次渲染时进行初始化,检测终端功能,并根据配置的模式和可用的字体选择适当的图标集。
来源: internal/icons.zsh1-7 internal/icons.zsh3-1141
Powerlevel10k支持多种图标模式,每种模式都有不同的字体要求
| 图标模式 | 所需字体 | 描述 |
|---|---|---|
nerdfont-v3 | Nerd Fonts v3 | 最广泛的图标集,具有现代Nerd Fonts映射 |
nerdfont-complete | Nerd Fonts | 来自Nerd Fonts的全面图标集 |
awesome-patched | Awesome Patched Font | 来自Awesomepatched字体的图标 |
awesome-fontconfig | 带有fontconfig的Awesome Font | 使用fontconfig显示图标 |
awesome-mapped-fontconfig | 带有Awesome Font的映射fontconfig | 需要额外的字体映射 |
flat | 与awesome-patched相同,但具有平坦的分割符 | 修改了分隔符样式 |
ascii | 任何字体 | 简单的ASCII字符,可在任何终端中使用 |
compatible | Powerline兼容字体 | 基本兼容模式 |
模式是根据您的终端字体自动确定的,除非您在配置文件中使用 POWERLEVEL9K_MODE 显式设置。如果未检测到UTF-8编码,Powerlevel10k将回退到ASCII模式。
来源: internal/icons.zsh3-7 internal/icons.zsh16-1114
Powerlevel10k包含许多类别的图标
提示符结构图标:
LEFT_SEGMENT_SEPARATOR、RIGHT_SEGMENT_SEPARATOR)LEFT_SUBSEGMENT_SEPARATOR、RIGHT_SUBSEGMENT_SEPARATOR)MULTILINE_FIRST_PROMPT_PREFIX等)操作系统图标:
LINUX_ICON、APPLE_ICON、WINDOWS_ICON)LINUX_ARCH_ICON、LINUX_DEBIAN_ICON等)版本控制图标:
VCS_STAGED_ICON、VCS_UNSTAGED_ICON等)VCS_GIT_ICON、VCS_SVN_ICON等)VCS_GIT_GITHUB_ICON、VCS_GIT_GITLAB_ICON等)编程语言和工具图标:
PYTHON_ICON、RUBY_ICON、JAVA_ICON等)NODE_ICON、DOCKER_ICON等)系统状态图标:
RAM_ICON、LOAD_ICON等)NETWORK_ICON、WIFI_ICON等)BATTERY_ICON)来源: internal/icons.zsh20-112 internal/icons.zsh179-329 internal/icons.zsh490-647 internal/icons.zsh654-804 internal/icons.zsh807-957
在渲染提示符段时,Powerlevel10k通过考虑用户自定义的解析过程来获取相应的图标
_p9k_get_iconPOWERLEVEL9K_ICON_NAME)icons 数组中获取图标此解析机制允许用户在不修改核心代码的情况下覆盖任何图标。
来源: internal/p10k.zsh510-530 internal/icons.zsh1144-1153
有三种主要方式可以自定义Powerlevel10k中的图标
在源化Powerlevel10k之前,通过在您的 .zshrc 中设置 POWERLEVEL9K_MODE 来配置整体图标集
通过定义一个带有图标名称的变量来覆盖任何单个图标
使用 POWERLEVEL9K_ICON_PADDING 设置来控制图标周围的间距
来源: internal/icons.zsh1131-1140 internal/p10k.zsh510-530
段分隔符是用于在视觉上分隔提示符段的特殊图标。它们有几种变体
LEFT_SEGMENT_SEPARATOR):分隔左侧提示符中的段RIGHT_SEGMENT_SEPARATOR):分隔右侧提示符中的段LEFT_SUBSEGMENT_SEPARATOR、RIGHT_SUBSEGMENT_SEPARATOR):分隔段内的元素这些分隔符的外观会随着图标模式而变化,从powerline风格的三角形到ASCII模式下的简单垂直条或空格。
除了图标之外,Powerlevel10k还使用其他几个视觉元素
dir 段中的当前目录)来源: internal/p10k.zsh622-636 internal/p10k.zsh869-889
电池段演示了Powerlevel10k如何根据上下文动态使用图标。电池可以根据充电水平和充电状态显示不同的图标
这是通过状态检测和图标选择逻辑的组合来实现的
来源: internal/p10k.zsh1335-1494
图标系统遵循特定的初始化流程
POWERLEVEL9K_MODE 确定适当的图标集POWERLEVEL9K_MODE,它会检查终端是否支持UTF-8icons 数组中为了优化性能,Powerlevel10k会缓存图标查找
_p9k_get_icon() 检索图标时,结果会被缓存来源: internal/p10k.zsh510-530 internal/icons.zsh3-7 internal/icons.zsh1144-1153
最常见的图标问题与字体有关
如果您遇到与图标相关的问题
POWERLEVEL9K_MODE)POWERLEVEL9K_MODE=ascii