您當前的位置:首頁 > 遊戲

Powerlevel9k:zsh下最棒的Powerline主題

作者:由 FanDean 發表于 遊戲時間:2020-04-05

Powerlevel9k 簡介

Powerlevel9k主題可以用於 vanilla ZSH 或 ZSH 框架,如 oh-my-ZSH、 Prezto、 Antigen 等等。

Powerlevel9k的四個主要目標:

開箱即用:讓使用者無需過多配置即可擁有一個讓人眼前一亮的主題

極易定製:為那些想調整提示符的使用者,提供更加語義化和模組化的方式直接在

~/。zshrc

中進行配置。Powerlevel9k將提示符分割成不同的分段,使用者可以使用這些內建的分段來自由組合最終的提示符。

提供豐富的配置分段(Segments):內建分段涵蓋使用場景非常多;從表示計算機狀態的分段到單元測試覆蓋率的分段再到 AWS 例項的分段,都有提供。

保證主題渲染的速度:Powerlevel9k 儘可能最佳化程式碼以提高執行速度

這是我的個人配置效果:

Powerlevel9k:zsh下最棒的Powerline主題

Powerlevel9k 簡寫為 P9k

原文首發於:

這裡的格式需要改動的地方太多,實在不想改了,對不住,

請見原文

本人自認為此文章寫的還算不錯。

安裝 Powerlevel9k

涉及兩個步驟:

安裝 Powerline 字型

安裝 Powerlevel9k 主題

安裝 Powerline 字型:

尋找字型是一件很傷心的事情,這裡我推薦Ubuntu Mono Nerd Font Complete (Win使用者選擇帶有Windows的字型檔案)、 DejaVu Sans Mono Nerd Font Complete 、 (等距)更紗黑體

通常配置檔案中會有這麼一項配置

POWERLEVEL9K_MODE

,它的值受字型和字型安裝的方式的影響,值與字型之間不對應顯示時可能會達不到效果:

POWERLEVEL9K_MODE=‘nerdfont-complete’

對應的關係如下:

Configuration valueDescription

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中我們這樣操作:

# Linux 中:

mkdir -p ~/。local/share/fonts

cd ~/。local/share/fonts

curl -fLo “DejaVu Sans Mono Nerd Font Complete。ttf” https://github。com/ryanoasis/nerd-fonts/blob/master/patched-fonts/DejaVuSansMono/Regular/complete/DejaVu%20Sans%20Mono%20Nerd%20Font%20Complete。ttf

Windows中我們直接下載字型檔案,雙擊安裝即可。

如果需要使用

fontconfig

程式進行安裝,那麼先透過

apt-get install fontconfig

安裝 fontconfig 程式,再點選上面字型連結檢視如何安裝該字型的說明。

安裝 P9k 主題:

安裝 zsh

sudo apt install zsh

安裝 Oh-My-Zsh

sh -c “$(curl -fsSL

https://

raw。githubusercontent。com

/ohmyzsh/ohmyzsh/master/tools/install。sh

)”

安裝P9k

git clone

https://

github。com/bhilburn/pow

erlevel9k。git

~/。oh-my-zsh/custom/themes/powerlevel9k

配置 oh-my-zsh :編輯

~/。zshrc

修改zsh的主題

ZSH_THEME=“powerlevel9k/powerlevel9k”

修改終端字型:

修改終端所使用的字型為 你安裝的某 nerd font 字型。

重啟終端:

修改完成 重啟終端或

source ~/.zshrc

使配置生效。

P9k要求,zsh 最小版本: 5。1

提示符定製方式

提示符由最基本的 分段 (segments) 構成

我們直接在 zsh 的配置檔案

~/。zshrc

中對其進行定製,下面是一個簡單配置

# 配置zsh 當前使用的主題

ZSH_THEME=“powerlevel9k/powerlevel9k”

# P9k 使用的模式

POWERLEVEL9K_MODE=‘nerdfont-complete’

# 顯示在左邊的提示元素(分段位於括號中並以空格隔開)

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir dir_writable vcs vi_mode)

# 顯示在右邊的提示元素(分段)

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status)

# 左側提示符是否顯示兩行(游標顯示在下一行)

POWERLEVEL9K_PROMPT_ON_NEWLINE=true

{{% notice note %}} 如有問題請參考後文給出的故障排查連結 {{% /notice %}}

尋找可用分段

系統狀態:

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 your

kubectl

configuration。

dropbox

- Indicates Dropbox directory and syncing status using

dropbox-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 環境

提示符基本定製

讓提示符顯示兩行:

# 左側提示符是否顯示兩行(游標顯示在下一行)

POWERLEVEL9K_PROMPT_ON_NEWLINE=true

# 右側提示符是否顯示兩行

POWERLEVEL9K_RPROMPT_ON_NEWLINE=true

Powerlevel9k:zsh下最棒的Powerline主題

也可以使用

newline

分段將分段列表分成多行,比如

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir newline vcs)

設定提示符字首,比如

# 第一行左提示符字首(一般設定為空)

POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=“↱”

# 最後一行左提示符字首符號(一般設定為 $)

POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX=“↳ ”

在提示符上方插入一空行以保持間距:

POWERLEVEL9K_PROMPT_ADD_NEWLINE=true

禁用右側提示符:

POWERLEVEL9K_DISABLE_RPROMPT=true

Stylizing Your Prompt · Powerlevel9k/powerlevel9k Wiki 必看

獲取和設定顏色值

直接在終端執行下面的語句,獲取顏色值(顏色數值)

for code ({000。。255}) print -P —— “$code: %F{$code}最左側三位數字即顏色值Text Color%f”

一些終端模擬器允許您自定義終端使用的顏色。

P9k 提供

了兩個命令,您可以使用它們打印出模擬器使用的

顏色名稱

顏色數值

,以幫助您進行自定義;也可以直接使用獲取到的 顏色名稱

getColorCode background

getColorCode foreground

設定顏色值:

POWERLEVEL9K_分段名稱_FOREGROUND=‘red’

POWERLEVEL9K_分段名稱_BACKGROUND=‘blue’

也可以更改 P9k 的整體配色方案,比如設定為 light :

POWERLEVEL9K_COLOR_SCHEME=‘light’

背景色值設定為

none

表示不需要背景

將兩個分段連線在一起

可以為分段新增

_joined

字尾的形式,將兩個分段顯示為一個;添加了

_joined

字尾的分段(即使是自定義的分段)將會和它前一個分段連線在一起。請確保這兩個分段都能正常顯示,否則,可能會得到不想要的結果。

例如,如果要在右側提示符中將

status

background_jobs

連線在一起,可以這樣設定

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs_joined)

設定圖示

可以透過使用 p9k 提供的下例方法,列出主題中包含的所有圖示的名稱

get_icon_names

例如,如果您想對分段分隔符使用不同的字形,則可以使用以下方法輕鬆實現:

POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR=$‘\uE0B1’

POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=$‘\uE0B3’

其中

$

環境變數字首,

\uE0B1

為該圖示的碼點。

您可以使用相同的方法在提示符中新增或刪除間距。例如,如果您想刪除 vcs段中 “分支” 圖示之後的空格,則只需在該圖示的碼點之後新增一個空格即可(沒有測試,這是刪除還是增加?):

POWERLEVEL9K_VCS_BRANCH_ICON=$‘\uF126 ’

比如系統圖標經常會顯示不下,可以透過新增空格的方式來增加間距

POWERLEVEL9K_WINDOWS_ICON:=‘ ’

POWERLEVEL9K_LINUX_UBUNTU_ICON=‘ ’

使用

icons_test

分段,測試圖示上色效果,它將會列出所有上色的圖示:

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(icons_test)

定製分段

你也可以修改分段的預設樣式和顯示格式。

更改最左側的符號:

POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=“”

POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX=“▶ ”

POWERLEVEL9K_DISABLE_RPROMPT=true

POWERLEVEL9K_PROMPT_ON_NEWLINE=true

定製日期 date:

變數預設值描述

POWERLEVEL9K_DATE_FORMAT%D{%d。%m。%y}

使用 Zsh 時間格式

定製時間time:

變數預設值描述

POWERLEVEL9K_TIME_FORMAT‘H:M:S’

使用Zsh 時間格式

示列:

# Reversed time format

POWERLEVEL9K_TIME_FORMAT=‘%D{%S:%M:%H}’

# Output time, date, and a symbol from the “Awesome Powerline Font” set

POWERLEVEL9K_TIME_FORMAT=“%D{%H:%M:%S \uE868 %d。%m。%y}”

主機名 host:

# 有些主機名很長並以。分隔;預設為 %m ,數字表示要顯示的段數,負數表示只顯示最後一段

POWERLEVEL9K_HOST_TEMPLATE=“%2m”

# 主機圖示(預設情況)

# 本地主機圖示

POWERLEVEL9K_HOST_ICON=“\uF109 ”

# SSH遠端主機圖示

POWERLEVEL9K_SSH_ICON=“\uF489 ”

dir目錄:

對於某些字型,可以在特定目錄下還可顯示特定目錄圖示,比如在home目錄顯示一個房子。要關閉這些圖示可以見下面的變數設定為空即可:

POWERLEVEL9K_HOME_ICON=‘’

POWERLEVEL9K_HOME_SUB_ICON=‘’

POWERLEVEL9K_FOLDER_ICON=‘’

POWERLEVEL9K_ETC_ICON=‘’

您可以截斷過長的路徑將其限制在一定長度之內:

變數預設值描述

POWERLEVEL9K_DIR_PATH_ABSOLUTE

None如果設定為

true

將使用絕對路徑而不是主資料夾縮寫

~POWERLEVEL9K_SHORTEN_DIR_LENGTH2

如果您的縮短策略是整個目錄,則此欄位決定在末尾留下多少個目錄。 如果縮短策略是透過字元計數,則此欄位決定允許每個目錄字串使用多少個字元

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}”

powerlevel9k/segments

參考他人的配置

參考這裡列出的效果圖和

配置

資訊:Show Off Your Config

同時注意,終端型別、終端字型、終端配主題

這是我的個人配置效果

配置檔案見我的 : Powerlevel9k - 。zshrc

幾個不錯的配置:

P9KGT 配置方式值得參考

故障排除

如果遇到問題,可檢視此處的故障排查:Troubleshooting · Powerlevel9k/powerlevel9k Wiki

在我當前環境(WSL+ Oh-My-Zsh + Cmder)中,右側提示符只能設定一些簡單的分段,並且分段會被截斷一部分,右側如果放長一點的分段就會導致右側提示符溢位到下一行。

{{% notice note %}} 注意: 配置時

=

等號兩邊不能有空格。 {{% /notice %}}

啟用和禁用 Powerlevel9k

禁用 P9k

$ prompt_powerlevel9k_teardown

然後可以這樣啟用 P9k

$ prompt_powerlevel9k_setup

另外還有個:Powerlevel10k: A Zsh theme