Powerlevel9k 简介
Powerlevel9k主题可以用于 vanilla ZSH 或 ZSH 框架,如 oh-my-ZSH、 Prezto、 Antigen 等等。
Powerlevel9k的四个主要目标:
- 开箱即用:让用户无需过多配置即可拥有一个让人眼前一亮的主题
- 极易定制:为那些想调整提示符的用户,提供更加语义化和模块化的方式直接在
~/.zshrc
中进行配置。Powerlevel9k将提示符分割成不同的分段,用户可以使用这些内置的分段来自由组合最终的提示符。 - 提供丰富的配置分段(Segments):内置分段涵盖使用场景非常多;从表示计算机状态的分段到单元测试覆盖率的分段再到 AWS 实例的分段,都有提供。
- 保证主题渲染的速度:Powerlevel9k 尽可能优化代码以提高执行速度
这是我的个人配置效果:
安装 Powerlevel9k
涉及两个步骤:
安装 Powerline 字体:
通常配置文件中会有这么一项配置 POWERLEVEL9K_MODE
,它的值受字体和字体安装的方式的影响,值与字体之间不对应显示时可能会达不到效果:
POWERLEVEL9K_MODE='nerdfont-complete'
对应的关系如下:
Configuration value | Description |
---|---|
default | 对于常规的 powerline字体(如果您需要一个图标较少的终端) |
awesome-fontconfig |
If you use Awesome Terminal Fonts with fontconfig , without the named icons. |
awesome-mapped-fontconfig |
If you use Awesome Terminal Fonts with fontconfig , including named icons (e.g. $CODEPOINT_OF_AWESOME_CHECK ). |
awesome-patched |
If you use Awesome Terminal Fonts with a pre-patched font. |
nerdfont-complete |
If you use Nerdfonts in complete variant.(选择这个简单的) |
nerdfont-fontconfig |
If you use Nerdfonts in a fontconfig setup. |
我们选择简单一点的 nerdfont-complete
,在 Linux中我们这样操作:
|
|
Windows中我们直接下载字体文件,双击安装即可。
如果需要使用
fontconfig
程序进行安装,那么先通过apt-get install fontconfig
安装 fontconfig 程序,再点击上面字体链接查看如何安装该字体的说明。
安装 P9k 主题:
-
安装 zsh
1
sudo apt install zsh
-
安装 Oh-My-Zsh
1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
-
安装P9k
1
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
-
配置 oh-my-zsh :编辑
~/.zshrc
修改zsh的主题1
ZSH_THEME="powerlevel9k/powerlevel9k"
修改终端字体: 修改终端所使用的字体为 你安装的某 nerd font 字体。
重启终端: 修改完成 重启终端或 source ~/.zshrc 使配置生效。
P9k要求,zsh 最小版本: 5.1
提示符定制方式
提示符由最基本的 分段 (segments) 构成
我们直接在 zsh 的配置文件 ~/.zshrc
中对其进行定制,下面是一个简单配置
|
|
寻找可用分段
系统状态:
- background_jobs - 后台作业的指示器
- battery - 电池状态
- context - 您的用户名和主机,基于 $USER 和 SSH 状态的条件化
- date - 系统日期
- dir - 你当前的工作目录
- dir_writable - 如果您对当前文件夹没有写权限,则显示锁定图标
- disk_usage - 当前分区的磁盘使用情况
- history - 当前行的命令号
- host - 您当前的主机名
- ip - 显示当前 IP 地址
- vpn_ip - 显示当前的 VPN 地址
- public_ip - 显示你的公共IP地址
- load - 机器的平均负载
- os_icon - 操作系统图标
- ram - 显示空闲内存
- root_indicator - 指示用户是否具有超级用户状态
- status - 前一个命令的返回代码
- swap - 打印当前交换文件大小
- time - 系统时间
- user - 你现在的用户名
- vi_mode - 提示符的 Vi 编辑模式 (正常 | 插入)
- ssh - 指示您是否处于 SSH 会话中
开发环境部分:
- vcs - git 存储库相关信息
编程语言相关:
- GoLang Segments:
- go_version - Go版本号
- Javascript / Node.js Segments:
- node_version - Node.js 版本号
- nodeenv - 显示 node 版本和环境
- nvm - 略
- PHP Segments:
- php_version - 显示当前的 PHP 版本
- 略
- Python Segments:
- 略
- Java Segments:
- java_version - 显示当前的 Java 版本
Cloud Segments:
- AWS Segments:
aws
- The current AWS profile, if active.aws_eb_env
- The current Elastic Beanstalk Environment.
docker_machine
- The current Docker Machine.kubecontext
- The current context of yourkubectl
configuration.dropbox
- Indicates Dropbox directory and syncing status usingdropbox-cli
其他:
- custom_command - 创建一个自定义段来显示任意命令的输出
- command_execution_time - 显示当前命令执行时间
- todo - Shows the number of tasks in your todo.txt tasks file.
- detect_virt - Virtualization detection with systemd
- newline - Continues the prompt on a new line. - 在新行上继续提示符
- openfoam - 显示当前 sourced 环境
提示符基本定制
让提示符显示两行:
|
|
也可以使用 newline
分段将分段列表分成多行,比如
|
|
设置提示符前缀,比如
|
|
在提示符上方插入一空行以保持间距:
|
|
禁用右侧提示符:
|
|
获取和设置颜色值
直接在终端运行下面的语句,获取颜色值(颜色数值)
|
|
一些终端仿真器允许您自定义终端使用的颜色。 P9k 提供了两个命令,您可以使用它们打印出模拟器使用的 颜色名称 和 颜色数值,以帮助您进行自定义;也可以直接使用获取到的 颜色名称
|
|
设置颜色值:
POWERLEVEL9K_分段名称_FOREGROUND='red'
POWERLEVEL9K_分段名称_BACKGROUND='blue'
也可以更改 P9k 的整体配色方案,比如设置为 light :
POWERLEVEL9K_COLOR_SCHEME='light'
背景色值设置为
none
表示不需要背景
将两个分段连接在一起
可以为分段添加 _joined
后缀的形式,将两个分段显示为一个;添加了 _joined
后缀的分段(即使是自定义的分段)将会和它前一个分段连接在一起。请确保这两个分段都能正常显示,否则,可能会得到不想要的结果。
例如,如果要在右侧提示符中将status
和background_jobs
连接在一起,可以这样设置
|
|
设置图标
可以通过使用 p9k 提供的下例方法,列出主题中包含的所有图标的名称
get_icon_names
例如,如果您想对分段分隔符使用不同的字形,则可以使用以下方法轻松实现:
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR=$'\uE0B1'
POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=$'\uE0B3'
其中 $
环境变量前缀,\uE0B1
为该图标的码点。
您可以使用相同的方法在提示符中添加或删除间距。例如,如果您想删除 vcs段中 “分支” 图标之后的空格,则只需在该图标的码点之后添加一个空格即可(没有测试,这是删除还是增加?):
|
|
比如系统图标经常会显示不下,可以通过添加空格的方式来增加间距
|
|
使用icons_test
分段,测试图标上色效果,它将会列出所有上色的图标:
|
|
定制分段
你也可以修改分段的默认样式和显示格式。
更改最左侧的符号:
|
|
定制日期 date:
变量 | 默认值 | 描述 |
---|---|---|
POWERLEVEL9K_DATE_FORMAT |
%D{%d.%m.%y} |
使用 Zsh 时间格式 |
定制时间time:
变量 | 默认值 | 描述 |
---|---|---|
POWERLEVEL9K_TIME_FORMAT |
'H:M:S' |
使用Zsh 时间格式 |
示列:
|
|
主机名 host:
|
|
dir目录:
对于某些字体,可以在特定目录下还可显示特定目录图标,比如在home目录显示一个房子。要关闭这些图标可以见下面的变量设置为空即可:
|
|
您可以截断过长的路径将其限制在一定长度之内:
变量 | 默认值 | 描述 |
---|---|---|
POWERLEVEL9K_DIR_PATH_ABSOLUTE |
None | 如果设置为true 将使用绝对路径而不是主文件夹缩写~ |
POWERLEVEL9K_SHORTEN_DIR_LENGTH |
2 |
如果您的缩短策略是整个目录,则此字段决定在末尾留下多少个目录。 如果缩短策略是通过字符计数,则此字段决定允许每个目录字符串使用多少个字符 |
POWERLEVEL9K_SHORTEN_STRATEGY |
None | 如何截断目录字符串。(东西太多,请查看文档) |
POWERLEVEL9K_SHORTEN_DELIMITER |
.. |
要在截断的字符串中使用的分隔符。 可以是任何字符串,也可以是一个空字符串 |
如果要自定义目录分隔符,可以设置:
# Double quotes are important here!
POWERLEVEL9K_DIR_PATH_SEPARATOR="%F{red} $(print_icon 'LEFT_SUBSEGMENT_SEPARATOR') %F{black}"
参考他人的配置
参考这里列出的效果图和配置信息:Show Off Your Config
同时注意,终端类型、终端字体、终端配主题
这是我的个人配置效果
配置文件见我的 : Powerlevel9k - .zshrc
几个不错的配置:
- P9KGT 配置方式值得参考
故障排除
如果遇到问题,可查看此处的故障排查:Troubleshooting · Powerlevel9k/powerlevel9k Wiki
在我当前环境(WSL+ Oh-My-Zsh + Cmder)中,右侧提示符只能设置一些简单的分段,并且分段会被截断一部分,右侧如果放长一点的分段就会导致右侧提示符溢出到下一行。
=
等号两边不能有空格。
启用和禁用 Powerlevel9k
禁用 P9k
|
|
然后可以这样启用 P9k
|
|