POLOXUE's BLOG

POLOXUE's BLOG

20 Oct 2023

我的终端环境:与众不同的 zsh 主题 - powerlevel10k

本文介绍 zsh 主题 powerlevel10k 的安装与配置。

什么是 powerlevel10k?

Powerlevel10 是一款 zsh 的主题,它强调性能、灵活性和开箱即用。之前,我已经介绍了一些 zsh 主题,而通过 p10k(powerlevel10k 的简称)的可配置化能力,同样能配置出覆盖出之前主题的类似效果。

系列阅读:

更多待续…

NerdFont 字体安装

安装 powerlevel10k 前,先安装它依赖的字体:NerdFont。不同系统的安装方法,可查看它的文档

MacOS 的话,可直接通过 Homebrew 快速安装:

1
2
brew tap homebrew/cask-fonts
brew install font-hack-nerd-font

安装完成,配置终端字体,进入 iTerm2 Settings -> Profiles -> Text -> Font -> MesloLGS NF 即可。

安装 powerlevel10k

通过如下命令 下载:

1
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

配置 ~/.zshrc,启用 powerlevel10k 主题:

1
ZSH_THEME="powerlevel10k/powerlevel10k"

重新终端,或执行 source ~/.zshrc 生效配置。

配置 powerlevel10k

执行 source ~/.zshrc 后,终端将进入到 powerlevel10k 的配置向导。

前置问题

为了确认字体安装是否成功,在正式开始配置前,要先回答几个问题才能进入到主题的自定义向导。

问题有诸如:

  • Does this look like a diamond (rotated square)? 这是看起来钻石吗?
  • Does this look like a lock? 这看起来是锁吗?
  • Does this look like an upwards arrow? 这看起来是向上箭头吗?

等等。

如果字体已经配置成功,这些问题看起来就像逗傻子一样,按实际情况回答问题即可。一般情况下,都是选择 “Yes”。

开始配置

进入到正式阶段,按步骤配置自己的提示符风格,下面一共 12 步,都是非常简单的回答问题。考虑到第一次配置,有懵逼的可能性,我把全部的步骤都列出来了。

  1. 选择提示符风格,分别是 Lean、Classic、Rainbow 和 Pure。我选风格 3,大众所爱的风格,彩虹 Rainbow,则输入 3。
  1. 字符集设置,毫无疑问,配置 unicode,选择 1。
  1. 提示符显示当前时间风格。我选择 1,只显示命令耗时,不显示当前时间。
  1. 提示符分隔符,也就是 src/master 之间的符号风格。我钟爱箭头,选择 1 -> Angled.
  1. 提示符头部风格,就是 master > 的风格选择。毫无疑问,我钟爱箭头,选择 1 - Sharp。
  1. 提示符尾部风格,钟爱箭头,但不是双箭头,选择 1 - Flat。
  1. 提示符高度,显示一行还是两行,体验过两行,还是一行更紧凑一些,选择 1 - one line。
  1. 两个命令键的间距,我喜欢两行离的近一点,选择 1 - Compact。
  1. 提示符 Icons,多点 Icon 更帅,否则看起来就和一般主题没区别了,so 选择 2 - Many Icons。
  1. 提示符丰富度,增加一些文本描述,帮助理解提示符中字符含义。还是简洁为美,毕竟空间不能占用太多,而且含义简单,无需文本辅助。我选择 1 - Consice。
  1. 这是什么配置?提示符瞬闪?好像命令执行后提示符就立刻消失,只保留在最新的提示符,先选择 n - No 看看效果吧。
  1. 提示符高性能模式,是否启用。推荐启用,就启用吧 1-verbose,如果发现有兼容问题,在重新配置 off。

到此基本全部的配置都已经完成,powerlevel10k 命令行提示符的最终效果,如下所示:

配置完成后,如果希望重新配置,执行 p10k configure 会重新打开配置向导。

配置文件

通过 powerlevel10k 的配置导航能快速自定义提示符的主题风格,但如想更细粒度的配置,可直接在 $HOME/.p10k.zsh 配置,配置导航只是最粗粒度的配置方式。

如配置提示符两侧内容,通过 ~/.p10k.sh 中的变量 POWERLEVEL9K_LEFT_PROMPT_ELEMENTSPOWERLEVEL9K_RIGHT_PROMPT_ELEMENTS 设置。

如下所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
  os_icon                 # os identifier
  dir                     # current directory
  vcs                     # git status
  # prompt_char           # prompt symbol
)

typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
  status                  # exit code of the last command
  command_execution_time  # duration of the last command
  ...
  # time                  # current time
  ...
)

如前面配置的时候,设置了不显示当前时间,现在可以通过打开 POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS 中的 time 就可重新显示命令的时间。

还有前面对提示符瞬闪的配置,transient 设置为 off。如果希望启用,同时有不重新经历一次配置向导,直接进入 ~/.p10k.zsh 配置变量 POWERLEVEL9K_TRANSIENT_PROMPT=always,即可。

1
2
3
4
5
6
7
8
# Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
# when accepting a command line. Supported values:
#
#   - off:      Don't change prompt when accepting a command line.
#   - always:   Trim down prompt when accepting a command line.
#   - same-dir: Trim down prompt when accepting a command line unless this is the first command
#               typed after changing current working directory.
typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always

总结

本文介绍了 powerlevel10k 的安装与配置,它的更多能力还可以在 ~/.p10k.sh 继续探索,诸如对诸多其他工具的支持。

最后,如果希望你命令行提示能给你提供更多信息,请安装 powerlevel10k!

我的博文:我的终端环境:与众不同的 zsh 主题 - powerlevel10k