iTerm2 + zsh + Oh My Zsh + Powerlevel10k 打造 Mac 下最強終端

本文首發(fā)于我的個人博客 Sui Xin’s Blog
原文: https://suixinblog.cn/2019/09/beautify-terminal.html  作者: Sui Xin

寫在前面

對于開發(fā)人員來說,每天打交道最多的兩類應(yīng)用即代碼編輯器與終端盾似,一個好用的代碼編輯器和終端可以使效率飛速提升幽歼。代碼編輯器有 VSCode虏等,那也應(yīng)有如此酷炫的終端登夫。

除了 iTerm2功咒,本文同樣適用于大多數(shù) Linux 終端和 WSL (Windows Subsystem for Linux)跋理,通過以下步驟可以實現(xiàn)同樣的效果震放。

先上兩種配置結(jié)果:
Classic Prompt Style:

image

Rainbow Prompt Style:
image

安裝 iTerm2

對于 Linux 和 WSL 用戶比默,可以略過本步驟幻捏。Linux 使用默認(rèn)的終端,WSL 使用 Windows Terminal 實現(xiàn)相同的效果命咐。

對于 macOS 用戶來說篡九,iTerm2 是一個代替系統(tǒng)自帶終端的好方案,它有很多快捷的小功能可以大幅提高效率醋奠,也擁有漂亮且個性化自由度較大的界面榛臼。

安裝 zsh

查看是否已安裝

zsh --version

安裝

# macOS
brew install zsh zsh-completions

# Ubuntu
sudo apt-get install zsh

# CentOS
sudo yum -y install zsh

切換為默認(rèn) shell

chsh -s /bin/zsh

安裝 Oh My Zsh

Oh My Zsh 可以做很多的定制化內(nèi)容伊佃,包括豐富的主題與插件,讓你直呼 AMAZING!!
兩種方式選擇一種即可:

# 使用 curl 命令
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

# 或者使用 wget 命令
sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

安裝 Powerlevel10k

Oh My Zsh 有許許多多的主題/外部主題沛善,個人覺得比較好用的是 Powerlevel9k航揉,使用了大約一年的時間,但響應(yīng)時間卻越變越慢金刁,遂轉(zhuǎn)到了它的更新版 Powerlevel10k帅涂,它可以直接兼容 Powerlevel9k 的配置,也可以直接使用它提供的菜單化配置腳本尤蛮,簡單回答一些問題就可以生成美觀的配置媳友。

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

克隆下來之后,在 zsh 的配置文件 ~/.zshrc 中設(shè)置 ZSH_THEME=powerlevel10k/powerlevel10k 即可产捞。

安裝 Nerd Font 字體

完成上述操作之后醇锚,你可能會發(fā)現(xiàn)終端出現(xiàn)了亂碼,這是因為你的電腦不支持那么多字體坯临,需要安裝擴展字體焊唬。

Nerd 字體是支持 icon 最多的,可以直接在 nerd-fonts GitHub 或者官網(wǎng)下載 Hack Nerd Font尿扯。Powerlevel10k 作者推薦使用 Meslo Nerd Font 字體求晶,但發(fā)現(xiàn)在 iTerm2 下 Hack Nerd Font 更好看一點,其他系統(tǒng)還是下載 Meslo Nerd Font 比較保險衷笋。

對于 macOS 和 WSL 來說芳杏,直接雙擊下載的 ttf 文件即可安裝。對于 Linux 來說辟宗,需要將文件放入指定目錄并刷新緩存爵赵,請看這里

安裝之后泊脐,對于 iTerm2 來說空幻,在 Preferences-Profiles-Text-Font 設(shè)置為對應(yīng)字體。Windows Terminal 在 settings.json 配置中加入 "fontFace": "MesloLGS NF" 即可容客。

配置 Powerlevel10k

配置分為兩步秕铛,首先使用自動化配置腳本,其次根據(jù)個人喜好進行個性化設(shè)置缩挑。

自動配置腳本

Powerlevel10k 提供了一個配置腳本但两,運行腳本后只需回答幾個簡單的問題即可完成配置。

直接輸入 p10k configure 即可進入配置問答界面供置,完成后會生成一個配置文件 ~/.p10k.zsh谨湘,并且在 ~/.zshrc 中自動加入了

# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ -f ~/.p10k.zsh ]] && source ~/.p10k.zsh

在配置過程中需要注意的是,Instant Promt Mode 盡量選擇打開,可以加快終端啟動速度紧阔,詳情請見這里坊罢。

個性化設(shè)置

在 Powerlevel10k 新生成的配置文件 ~/.p10k.zsh 中根據(jù)個人喜好進行個性化設(shè)置。

每次修改配置文件后重啟終端或者新開一個 tab 即可顯示擅耽。
vim 中可以通過 :/str 來執(zhí)行搜索活孩,通過 Nn 鍵來跳轉(zhuǎn)到上一個結(jié)果或下一個結(jié)果。

左右欄圖標(biāo)顯示

左欄圖標(biāo)修改 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS 中內(nèi)容秫筏,右欄圖標(biāo)修改 POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS 中內(nèi)容诱鞠。作者寫了比較詳細(xì)的注釋,按需修改即可这敬,也可以調(diào)整顯示順序航夺。全部可配置內(nèi)容請見這里,也可以自己實現(xiàn)一個崔涂。

左右分隔符號

也就是文首第二張圖像火一樣的分隔符號阳掐,實際上用到了兩個 Unicode 字符 \uE0C0\uE0C2。還有其他形狀的字符冷蚂,請在 Nerd Font Cheat Sheet 搜索 E0缭保。

# Separator between different-color segments on the left.
typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0C0'
# Separator between different-color segments on the right.
typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0C2'
# The right end of left prompt.
typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0C0'
# The left end of right prompt.
typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0C2'

長路徑折疊

Powerlevel10k 默認(rèn)將長路徑折疊到只顯示最上層和最底層,多少有些不方便蝙茶,可以通過如下進行更改艺骂,推薦 2 或者 3。

# Don't shorten this many last directory segments. They are anchors.
typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=2

命令成功提示符

命令成功提示符(即右邊欄最左邊的對號)有時候會被遮擋住隆夯,可能是一個小 bug 吧钳恕,希望作者后續(xù)能修復(fù)它,現(xiàn)在可以通過在前面加一個空格來避免:

typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION=' ?'

typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION=' ?'

顏色配置

查看所有可用顏色:

for i in {0..255}; do print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done

修改目錄顏色為黑色字:

##################################[ dir: current directory ]##################################
# Current directory background color.
# typeset -g POWERLEVEL9K_DIR_BACKGROUND=4
# Default current directory foreground color.
typeset -g POWERLEVEL9K_DIR_FOREGROUND=0

# Color of the shortened directory segments.
typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=238
# Color of the anchor directory segments. Anchor segments are never shortened. The first
# segment is always an anchor.
typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=0
# Display anchor directory segments in bold.
typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true

修改時間顯示塊顏色使得不那么刺眼:

typeset -g POWERLEVEL9K_TIME_BACKGROUND=255

其實在 ~/.p10k.zsh 中蹄衷,所有的顏色幾乎都可以修改忧额,作者注釋也寫的很清楚,可以自己根據(jù)喜好配置愧口。

Oh My Zsh 插件

Oh My Zsh 有非常豐富的插件睦番,使用插件可以使得在終端的效率翻倍,下面介紹 5 個我常用的插件耍属。
插件均需在配置文件 ~/.zshrc 中寫出托嚣,如下:

plugins=(
  git
  github
  autojump
  zsh-syntax-highlighting
  zsh-autosuggestions
)

git

git plugin
提供豐富的 git 別名與幾個有用的函數(shù)。

github

github plugin
提供幾個快捷的函數(shù)厚骗。

autojump

autojump
可以記錄下來你之前 cd 到訪過的所有目錄注益,下次要去那個目錄時不需要輸入完整的路徑,直接 j somedir 即可到達溯捆,甚至那個目標(biāo)目錄的名稱只輸入開頭也可以。

安裝方式

zsh-syntax-highlighting

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 中配置
plugins=(zsh-syntax-highlighting)

zsh-autosuggestions

zsh-autosuggestions
終端命令自動推薦提揍,會記錄下來之前使用過的命令啤月,當(dāng)你輸入開頭時,會暗色提示之前的歷史命令供你選擇劳跃,可直接按右方向鍵選中該命令谎仲。

# 克隆
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# ~/.zshrc 中配置
plugins=(zsh-autosuggestions)

修改 VSCode 的終端

VSCode 帶的終端界面也可保持一致,只需簡單設(shè)置字體即可刨仑。
打開 VSCode 的設(shè)置郑诺,搜索 terminal font,做如下修改:

image

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杉武,一起剝皮案震驚了整個濱河市辙诞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轻抱,老刑警劉巖飞涂,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異祈搜,居然都是意外死亡较店,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門容燕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梁呈,“玉大人,你說我怎么就攤上這事蘸秘」倏ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵秘血,是天一觀的道長味抖。 經(jīng)常有香客問我,道長灰粮,這世上最難降的妖魔是什么仔涩? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮粘舟,結(jié)果婚禮上熔脂,老公的妹妹穿的比我還像新娘。我一直安慰自己柑肴,他們只是感情好霞揉,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晰骑,像睡著了一般适秩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天秽荞,我揣著相機與錄音骤公,去河邊找鬼。 笑死扬跋,一個胖子當(dāng)著我的面吹牛阶捆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钦听,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼洒试,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了朴上?” 一聲冷哼從身側(cè)響起垒棋,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎余指,沒想到半個月后捕犬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡酵镜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年碉碉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淮韭。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡垢粮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出靠粪,到底是詐尸還是另有隱情蜡吧,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布占键,位于F島的核電站昔善,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏畔乙。R本人自食惡果不足惜君仆,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牲距。 院中可真熱鬧返咱,春花似錦、人聲如沸牍鞠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽难述。三九已至萤晴,卻和暖如春吐句,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背店读。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工蕴侧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人两入。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像敲才,于是被迫代替她去往敵國和親裹纳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344