【MacOS】命令行配置zsh以及powerlevel10k主题
一、概述
前段時間在B站上看到有UP主在Manjaro Linux上使用了zsh并且配置一個超級炫酷的主題powerlevel9k:傳送門。看了之后非常躍躍欲試,想在我的iMac上也配置一下,但是網上找了一下powerlevel的最新版本是powerlevel10k,而且10k的運行效率比9k提高很多,因此在這篇博文中記錄一下我在MacOS中使用iTerm2終端配置zsh和powerlevel10k主題的過程。最終顯示的效果如下(下文多圖預警):
二、配置過程
1. 安裝iTerm2并配置顏色字體
iTerm2相對于蘋果原生的terminal具有更多的個性化定制和快捷鍵綁定,是MacOS終端的不二選擇。可以在iTerm2的官網進行下載。下載完后可以選擇一個顏色主題,我配置的是Solarized Dark,如下圖。
配置完顏色主題后為了防止后面powerlevel10k主題亂碼,可以安裝nerd字體。訪問nerd fonts官網,下載DejaVuSansMono Nerd Font(當然你也可以選擇你喜歡的字體),下載完后雙擊安裝即可,然后在iTerm2的text配置項中選擇這個字體,如下圖。
2. 安裝oh my zsh
在安裝oh my zsh前可以先輸入zsh --version判斷一下本機是否已經安裝了zsh(MacOS一般默認都會安裝),如果有輸出的話可以將zsh設置為默認shell:chsh -s /bin/zsh
oh my zsh是一個zsh的一個框架,它提供了很多zsh內建函數,并提供插件管理、主題管理等功能。安裝它能夠使zsh的使用體驗更加完美。安裝方式也很簡單,通過curl或者wget就行了。
# 使用curl下載安裝腳本并執行 sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# 使用wget下載安裝腳本并執行 sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"3. 配置 Powerlevel10k
Powerlevel10k是oh my zsh的一個外部主題,托管在GitHub上,想要使用該主題只需要將該項目克隆下來:
# 將項目克隆到~/.oh-my-zsh/custom/themes/powerlevel10k git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k# 使用gitee可以更加快速 git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k克隆下來之后,在 zsh 的配置文件 ~/.zshrc 中設置 ZSH_THEME=powerlevel10k/powerlevel10k 即可,然后命令行輸入p10k configure進行初始化。若要實現第一小節中圖片的效果可以將下面腳本復制到~/.zshrc中的最后。每段代碼的含義可以訪問項目的GitHub,我下面就不再展開了。
COLOR=(004 # 005 006 # 010007) COLOR_ARRAY=(004 067 059 # 005 062 059 006 073 109 # 010 070 115007 249 240) # THEME_COLOR=$(( $RANDOM % 3 )) THEME_COLOR=1 DEFAULT_BACKGROUND=235 DEFAULT_FOREGROUND="${COLOR[$(( $THEME_COLOR + 1 ))]}"POWERLEVEL9K_MODE="nerdfont-complete"#####################################[ prompt ]###################################### POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╭─" POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\ue0b4' POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\ue0b4' POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\ue0b0' POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╰─%F{${COLOR_ARRAY[$(( $THEME_COLOR * 3 + 2 ))]}}\uf054%F{$DEFAULT_FOREGROUND}\uf054" typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=$'\uf054' typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=124 typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(user device virtualenv dir vcs newline prompt_char) #POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(command_execution_time background_jobs status history time ssh)#####################################[ vcs: git status ]###################################### POWERLEVEL9K_VCS_CLEAN_BACKGROUND="green" POWERLEVEL9K_VCS_CLEAN_FOREGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_VCS_MODIFIED_BACKGROUND="yellow" POWERLEVEL9K_VCS_MODIFIED_FOREGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=166 POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND="$DEFAULT_BACKGROUND"##################################[ dir: current directory ]################################## POWERLEVEL9K_DIR_HOME_BACKGROUND="$DEFAULT_FOREGROUND" POWERLEVEL9K_DIR_HOME_FOREGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND="$DEFAULT_FOREGROUND" POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_SHORTEN_DIR_LENGTH=16 POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute" POWERLEVEL9K_SHORTEN_DELIMITER='...' POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=240##################################[ status ]################################## POWERLEVEL9K_STATUS_OK_FOREGROUND="green" POWERLEVEL9K_STATUS_OK_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))" POWERLEVEL9K_STATUS_ERROR_FOREGROUND="red" POWERLEVEL9K_STATUS_ERROR_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"POWERLEVEL9K_HISTORY_FOREGROUND="$DEFAULT_FOREGROUND" POWERLEVEL9K_HISTORY_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))"POWERLEVEL9K_VIRTUALENV_BACKGROUND="$(( $DEFAULT_BACKGROUND - 2 ))" POWERLEVEL9K_VIRTUALENV_FOREGROUND="$DEFAULT_FOREGROUND"POWERLEVEL9K_OS_ICON_FOREGROUND="$DEFAULT_FOREGROUND" POWERLEVEL9K_OS_ICON_BACKGROUND="$DEFAULT_BACKGROUND"POWERLEVEL9K_TIME_FORMAT="%D{%T}" # ? 15:29:33 POWERLEVEL9K_TIME_FOREGROUND="$DEFAULT_FOREGROUND" POWERLEVEL9K_TIME_BACKGROUND="$DEFAULT_BACKGROUND"POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND="$DEFAULT_FOREGROUND" POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 #POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND="$DEFAULT_FOREGROUND"POWERLEVEL9K_ROOT_ICON=$'\uF198' # ?POWERLEVEL9K_SSH_FOREGROUND="$DEFAULT_FOREGROUND" POWERLEVEL9K_SSH_BACKGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_SSH_ICON="\uF489" # ?POWERLEVEL9K_HOST_LOCAL_FOREGROUND="$DEFAULT_FOREGROUND" POWERLEVEL9K_HOST_LOCAL_BACKGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_HOST_REMOTE_FOREGROUND="$DEFAULT_FOREGROUND" POWERLEVEL9K_HOST_REMOTE_BACKGROUND="$DEFAULT_BACKGROUND"POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_LOAD_WARNING_BACKGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_LOAD_NORMAL_BACKGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND="red" POWERLEVEL9K_LOAD_WARNING_FOREGROUND="yellow" POWERLEVEL9K_LOAD_NORMAL_FOREGROUND="green" POWERLEVEL9K_LOAD_CRITICAL_VISUAL_IDENTIFIER_COLOR="red" POWERLEVEL9K_LOAD_WARNING_VISUAL_IDENTIFIER_COLOR="yellow" POWERLEVEL9K_LOAD_NORMAL_VISUAL_IDENTIFIER_COLOR="green"POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND_COLOR="$DEFAULT_BACKGROUND" POWERLEVEL9K_BATTERY_CHARGING_BACKGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_BATTERY_CHARGED_BACKGROUND="$DEFAULT_BACKGROUND" POWERLEVEL9K_BATTERY_DISCONNECTED_BACKGROUND="$DEFAULT_BACKGROUND"function prompt_user() {p10k segment -b $DEFAULT_BACKGROUND -f $DEFAULT_FOREGROUND -i $'\uf2be' +r -t '%n' } function prompt_device() {p10k segment -b "$(( $DEFAULT_BACKGROUND + 2 ))" -f $DEFAULT_FOREGROUND -i $'\uf108' +r -t '%m' }三、插件
oh my zsh提供了相當多插件供你使用,不過我配置的插件并不是很多,就只有以下四種,不過可以滿足我對命令行的基本需求了,而且太多插件的話也會拖慢zsh的啟動速度,所以大家可以根據自己的喜好在zshrc中配置插件。若要瀏覽oh my zsh的官方插件可以訪問它的GitHub插件wiki
plugins=(gitzzsh-syntax-highlightingzsh-autosuggestions) ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=240'1. git
git插件主要提供了很多git命令行縮寫別名,以及一些有用的函數,詳情可以訪問oh-my-zsh Git插件。同時在powerlevel主題下進入一個Git倉庫,你的命令提示符也會發生變化哦~
2. z
z插件的主要功能就是快速跳轉,當我們使用bash的時候進入一個目錄必須輸入它完整的路徑名,使用z插件后它會記憶你cd過的目錄,當你使用z [dir]的時候,它會快速跳轉到該目錄,再也不用手動輸入一長串路徑了。
3. zsh-syntax-highlighting
該插件的功能是提供命令行的語法高亮,所謂的語法高亮指的是你輸入的命令會產生一個顏色效果,如下圖
不過該插件是非官方的第三方插件所以需要下載,下載方式也很簡單:
# 將項目克隆到~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting克隆完成后在~/.zshrc中配置該插件就行了,就像第三小節中的示例一樣。
4. zsh-autosuggestions
該插件的功能是提供命令行的自動提示,雖然bash可以通過tab鍵的方式進行自動補全,但是該插件提供了一個可視化的方式提示你后面可能會輸入的命令,如下圖。當它給出的自動提示符合你的期望的時候你可以按方向鍵的→鍵進行補全。
同樣地,這個插件是非官方的第三方插件,像上一個插件一樣從GitHub克隆后,在~/.zshrc中配置即可激活使用。
總結
以上是生活随笔為你收集整理的【MacOS】命令行配置zsh以及powerlevel10k主题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Marvell 交换芯片DSA(分布式交
- 下一篇: 基于51单片机的超声波测距仪