巧用 iTerm2 & zsh & oh-my-zsh 打造炫酷的 MacOS 終端環境

MacOS 系統自帶的 Bash 雖然已經很強大,但是對於一些細節功能的支持並不完美,重點是對於一個顏控來說,原生 Bash 真的很醜……可塑性也不高。本文將使用 iTerm2 這款被各路大牛吹爆的 MacOS 平臺最好用終端結合 zsh 來打造一個炫酷的終端環境。最終效果大致如下:

Bash 與調整後的 iTerm2 對比 —— From AigeStudio

左邊是原生 Bash 默認狀態,右邊是 iTerm2 做完整容手術後的樣子。本文我們只整容,不介紹 iTerm2 和 zsh 的相關功能,關於這兩者的強大功能你完全可以自窺對應的官方文檔自行修煉。最後,你可能會問:問什麼要這麼炫酷的終端環境呢?這個問題的答案就好比爲什麼喜歡看帥氣小夥或漂亮妹子一樣簡單~

安裝 iTerm2

首先我們要做的當然是安裝 iTerm2 啦,安裝方式主要分爲兩種:

  1. 命令行安裝
  2. 安裝包安裝

兩者都可以安裝 iTerm2 ,任選一種即可。

命令行安裝

命令行安裝主要是通過 brew 命令行工具進行,如果你尚未安裝過 brew,那麼請先參閱 MacOS 安裝 brew 並配置 cask

安裝 iTerm2 直接使用以下命令即可:

AigeStudio@aige$ brew cask instal iterm2

安裝包安裝

這個就很簡單了,直接打開 iTerm2 官網下載安裝即可。

配置 iTerm2

默認的 iTerm2 比較單調不怎麼美觀:

iTerm2 默認狀態 —— From AigeStudio

我們可以通過一系列的設置更改它的色彩讓其變得好看。

調整 iTerm2 色彩顯示範圍

在早期的 iTerm2 版本中其默認的色彩顯示範圍很窄,需要將其調整爲更寬的色彩顯示範圍才能更好地展示自定的顏色,調整方式爲進入 iTerm2 的 “Preferences->Profiles->Terminal”,將 “Report Terminal Type” 設置爲 “xterm-256color”:

調整 iTerm2 色彩範圍 —— From AigeStudio

在最近的一些更新版本中,iTerm2 已經將默認的 “Report Terminal Type” 值設置成了 “xterm-256color”,因此如果你用的 iTerm2 版本較新也許就不用更改啦。

更改 iTerm2 的 “Color Preset”

iTerm2 內置了幾個不怎麼好看的 Color Preset:

iTerm2 內置顏色預設 —— From AigeStudio

比如 iTerm2 默認的 “Dark Background” 顏色搭配就很生硬,慶幸的是 iTerm2 支持自己導入(或自己製作,如果你可以的話) Color Preset:

導入 iTerm2 顏色預設 —— From AigeStudio

網上有許多大牛製作的 “Color Preset” 庫,大家可以直接下載導入到 iTerm2 中使用,這裏愛哥使用的是 GitHub 上開源項目 iTerm2-Color-Schemes 裏的 “Color Preset”。將 “iTerm2-Color-Schemes” 這個項目 Clone 下來後其目錄結構如下:

開源項目 iTerm2-Color-Schemes 目錄結構 —— From AigeStudio

我們這裏只使用 “Color Preset”,這些 “Color Preset” 都存放在 “schemes” 目錄下而 “screenshots” 目錄下這是對應的預覽圖:

開源項目 iTerm2-Color-Schemes 預覽圖 —— From AigeStudio

隨便挑選一個,比如這裏愛哥選的是 “teerb”,記住這個預設名字,回到 “iTerm2的Preferences->Profiles”,選擇 “colors” 標籤:

iTerm2 顏色設置 —— From AigeStudio

然後選擇右下角的 “Color Preset...”,在彈出的選擇框中我們選擇 “import...”,然後選中 “schemes” 目錄中的 “teerb” 預設導入,導入的預設並不會直接使用:

iTerm2 導入顏色設置 —— From AigeStudio

還需要我們手動選擇一下。應用成功後可以看到整個 iTerm2 終端窗口顏色改變說明修改成功:

導入 iTerm2 顏色設置成功 —— From AigeStudio

讓 iTerm2 支持字符 Icon

爲了讓 iTerm2 顯示特殊的 Icon 字符,我們還需安裝特殊的字體,這類字體稱爲 “PowerLine Font”,還有可以支持比 “PowerLine Font” 更多字符字體的 “Nerd Font”,這裏愛哥直接使用的 “Nerd Font”,安裝後 iTerm2 顯示效果如下圖(注:下圖是全部配置完成後的效果):

演示字符字體 —— From AigeStudio

字體的安裝也可以分爲兩種形式:

  1. 命令行安裝
  2. 字體文件直接安裝

這裏愛哥個人是比較傾向於推薦命令的方式安裝的,因爲字體與應用不同,應用在 MacOS 裏面獨立性比較強管理起來方便,字體雖說有專門的 “Font Book” 應用管理,但是使用起來遠不如直接用 brew 管理方便。

字體文件直接安裝

這種方式很簡單,就是直接下載對應的字體文件雙擊安裝即可,安裝後的字體文件可通過 MacOS 自帶的 Font Book 應用管理,這裏不在贅述。

命令行安裝

通過 brew 命令安裝先以 “nerd” 作爲關鍵詞搜索相關資源:

AigeStudio@aige$ brew search nerd

homebrew/cask-fonts/font-3270-nerd-font
homebrew/cask-fonts/font-3270-nerd-font-mono
homebrew/cask-fonts/font-anonymouspro-nerd-font
homebrew/cask-fonts/font-anonymouspro-nerd-font-mono
homebrew/cask-fonts/font-arimo-nerd-font
homebrew/cask-fonts/font-arimo-nerd-font-mono
homebrew/cask-fonts/font-aurulentsansmono-nerd-font
homebrew/cask-fonts/font-aurulentsansmono-nerd-font-mono
homebrew/cask-fonts/font-bitstreamverasansmono-nerd-font
homebrew/cask-fonts/font-bitstreamverasansmono-nerd-font-mono
homebrew/cask-fonts/font-codenewroman-nerd-font
homebrew/cask-fonts/font-codenewroman-nerd-font-mono
homebrew/cask-fonts/font-cousine-nerd-font
homebrew/cask-fonts/font-cousine-nerd-font-mono
homebrew/cask-fonts/font-dejavusansmono-nerd-font
homebrew/cask-fonts/font-dejavusansmono-nerd-font-mono
homebrew/cask-fonts/font-droidsansmono-nerd-font
homebrew/cask-fonts/font-droidsansmono-nerd-font-mono
homebrew/cask-fonts/font-fantasquesansmono-nerd-font
homebrew/cask-fonts/font-fantasquesansmono-nerd-font-mono
homebrew/cask-fonts/font-firacode-nerd-font
homebrew/cask-fonts/font-firacode-nerd-font-mono
homebrew/cask-fonts/font-firamono-nerd-font
homebrew/cask-fonts/font-firamono-nerd-font-mono
homebrew/cask-fonts/font-go-mono-nerd-font
homebrew/cask-fonts/font-go-mono-nerd-font-mono
homebrew/cask-fonts/font-gohu-nerd-font
homebrew/cask-fonts/font-gohu-nerd-font-mono
homebrew/cask-fonts/font-hack-nerd-font
homebrew/cask-fonts/font-hack-nerd-font-mono
homebrew/cask-fonts/font-hasklig-nerd-font
homebrew/cask-fonts/font-hasklig-nerd-font-mono
homebrew/cask-fonts/font-heavydata-nerd-font
homebrew/cask-fonts/font-heavydata-nerd-font-mono
homebrew/cask-fonts/font-hermit-nerd-font
homebrew/cask-fonts/font-hermit-nerd-font-mono
homebrew/cask-fonts/font-inconsolata-nerd-font
homebrew/cask-fonts/font-inconsolata-nerd-font-mono
homebrew/cask-fonts/font-inconsolatago-nerd-font
homebrew/cask-fonts/font-inconsolatago-nerd-font-mono
homebrew/cask-fonts/font-inconsolatalgc-nerd-font
homebrew/cask-fonts/font-inconsolatalgc-nerd-font-mono
homebrew/cask-fonts/font-iosevka-nerd-font
homebrew/cask-fonts/font-iosevka-nerd-font-mono
homebrew/cask-fonts/font-lekton-nerd-font
homebrew/cask-fonts/font-lekton-nerd-font-mono
homebrew/cask-fonts/font-liberationmono-nerd-font
homebrew/cask-fonts/font-liberationmono-nerd-font-mono
homebrew/cask-fonts/font-meslo-nerd-font
homebrew/cask-fonts/font-meslo-nerd-font-mono
homebrew/cask-fonts/font-monofur-nerd-font
homebrew/cask-fonts/font-monofur-nerd-font-mono
homebrew/cask-fonts/font-monoid-nerd-font
homebrew/cask-fonts/font-monoid-nerd-font-mono
homebrew/cask-fonts/font-mononoki-nerd-font
homebrew/cask-fonts/font-mononoki-nerd-font-mono
homebrew/cask-fonts/font-mplus-1mn-nerd-mono
homebrew/cask-fonts/font-mplus-nerd-font
homebrew/cask-fonts/font-mplus-nerd-font-mono
homebrew/cask-fonts/font-noto-nerd-font
homebrew/cask-fonts/font-noto-nerd-font-mono
homebrew/cask-fonts/font-profont-nerd-font
homebrew/cask-fonts/font-profont-nerd-font-mono
homebrew/cask-fonts/font-proggyclean-nerd-font
homebrew/cask-fonts/font-proggyclean-nerd-font-mono
homebrew/cask-fonts/font-robotomono-nerd-font
homebrew/cask-fonts/font-robotomono-nerd-font-mono
homebrew/cask-fonts/font-sharetechmono-nerd-font
homebrew/cask-fonts/font-sharetechmono-nerd-font-mono
homebrew/cask-fonts/font-sourcecodepro-nerd-font
homebrew/cask-fonts/font-sourcecodepro-nerd-font-mono
homebrew/cask-fonts/font-spacemono-nerd-font
homebrew/cask-fonts/font-spacemono-nerd-font-mono
homebrew/cask-fonts/font-terminus-nerd-font
homebrew/cask-fonts/font-terminus-nerd-font-mono
homebrew/cask-fonts/font-tinos-nerd-font
homebrew/cask-fonts/font-tinos-nerd-font-mono
homebrew/cask-fonts/font-ubuntu-nerd-font
homebrew/cask-fonts/font-ubuntu-nerd-font-mono
homebrew/cask-fonts/font-ubuntumono-nerd-font
homebrew/cask-fonts/font-ubuntumono-nerd-font-mono

在搜索到的字體中隨便挑一個執行下述命令安裝即可:

AigeStudio@aige$ brew install [字體名稱]

比如這裏愛哥使用的是 “font-robotomono-nerd-font-mono” 這個字體,就執行下述命令安裝這個字體:

AigeStudio@aige$ brew install homebrew/cask-fonts/font-robotomono-nerd-font-mono

安裝完成的字體只是安裝到了系統,我們還需要在 iTerm2 裏應用起來,同樣地在 iTerm2 的 “Preferences->Profiles”,選擇 “Text” 標籤:

選擇 Text 標籤 —— From AigeStudio

點擊界面下方的 “Change Font” 按鈕,在彈出的 “fonts” 對話框中找到我們安裝的字體,點擊後即可應用到 iTerm2 中:

應用字體 —— From AigeStudio

這裏需要注意的是,當你使用某些有問題的字體時可能會導致 iTerm2 假死,此時可以通過 “Font Book” 應用修復字體問題,方法很簡單,打開 “Font Book” 找到並選中該字體後點擊右下角的自動解決:

解決字體問題 —— From AigeStudio

“Font Book” 並非常駐應用,找到它最簡單的方式是通過 Spot:

從 Spot 查找 Font Book —— From AigeStudio

安裝 zsh

zsh 是一個可兼容 bash 並完全可以取而代之的 shell,其提供了比 bash 更強大的一系列功能,比如足以讓你欲罷不能的命令自動補全,比如當你鍵入 “git bran” 按下 tab 鍵後會自動補全命令爲 “git branch” ,繼續按 tab 還會列出相關分支,非常方便。

這裏愛哥通過 brew 工具來安裝管理 zsh,如果你還不知道 brew,可先查看 MacOS 安裝 brew 並配置 cask

使用 brew 安裝 zsh 非常簡單,打開我們安裝好的 iTerm,只需輸入一行簡單命令即可:

AigeStudio@aige$ brew install zsh

安裝完畢後還需將 shell 切換爲 zsh:

AigeStudio@aige$ sudo sh -c "echo $(which zsh) >> /etc/shells"
AigeStudio@aige$ chsh -s $(which zsh)

最後重啓 iTerm,如無意外你會看見如下的 zsh 首次配置信息:

This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

--- Type one of the keys in parentheses ---

如果你不想配置,那麼直接輸入 “0” 即可,此時會生成 zsh 的配置文件 “~/.zshrc”。此時窗口及信息變爲如下,表示 zsh 已經安裝配置成功:

配置 zsh 成功 —— From AigeStudio

安裝 oh-my-zsh

zsh 雖然強大,但是配置相當複雜,以至於很多人因爲配置zsh而放棄使用它,而 oh-my-zsh 的出現,極大地簡化了 zsh 的配置,你只需修改一份簡單的配置文件就可以操控 zsh,安裝 oh my zsh 的方式可以參考其 GitHub 頁,這裏愛哥直接使用官方給出的自動安裝方式:

AigeStudio@aige$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

安裝完成後就可以看到整個 iTerm2 窗口界面的變化:

安裝 oh-my-zsh 成功 —— From AigeStudio

修改 zsh 主題

oh-my-zsh 安裝完成後其默認 zsh 主題爲 robbyrussell,可以從 oh-my-zsh的 GitHub 開源項目 頁面查看更多的內置主題:

oh-my-zsh 提供的 zsh 主題 —— From AigeStudio

內置主題的使用很簡單,隨便找一個你喜歡的主題 Copy 其主題名字,比如這裏愛哥選擇 “afowler” 這個主題,編輯 zsh 的配置文件 “~/.zshrc”,將裏面的 ZSH_THEME="robbyrussell" 修改爲 ZSH_THEME="afowler" 然後執行命令:

AigeStudio@aige$ exec $SHELL

或重啓 iTerm2 即可。

安裝 zsh 第三方主題

oh-my-zsh 的第三方主題均存放在 “~/.oh-my-zsh/custom/themes” 目錄下,使用時只需將第三方主題下載到該目錄並修改配置文件中對應的主題名即可;這裏以 GitHub上 非常熱門的 PowerLevel9k 開源主題爲例,使用時先將該主題 clone 下來,將整個項目目錄 Copy 至 ~/.oh-my-zsh/custom/themes 目錄下(注意,是 powerlevel9k 的根目錄,不要有嵌套目錄):

安裝 oh-my-zsh 成功 —— From AigeStudio

然後修改配置文件將主題指定爲 “powerlevel9k”:ZSH_THEME="powerlevel9k/powerlevel9k"

注意:這裏的 “powerlevel9k/powerlevel9k” 指的是 powerlevel9k 目錄下的 powerlevel9k 主題,而不是 powerlevel9k 目錄下的 powerlevel9k 目錄。

修改完畢後記得執行 exec $SHELL 或重啓 iTerm2,默認效果如下:

PowerLevel9K 主題默認狀態 —— From AigeStudio

可以看到現在在命令行的左右側都有了信息顯示,我們可以根據 PowerLevel9K 的 wiki 自定義這些顯示信息,信息指定參數爲:

# 左邊信息參數以及默認值
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir vcs)

# 右邊信息參數以及默認值
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=((status root_indicator background_jobs history time))

我們可以根據 wiki 中各種不同的 Segments 設置自己喜歡的顯示信息,只需要在配置文件中加上上述兩個參數即可:

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir_writable vcs vi_mode )
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time load ram battery)

上面愛哥的配置是左邊顯示目錄讀寫狀態、版本控制信息以及編輯模式信息,右邊顯示的這是當前命令執行狀態、當前命令執行時間、負載信息、內存信息以及電量信息,顯示效果如下:

爲 PowerLevel9K 主題增加信息展示 —— From AigeStudio

你可以根據官方的 wiki 來自定義自己的顯示信息,具體可以參考官方 wiki 這裏就不多說了。除此之外,如果想讓該主題顯示我們上面設置的字符 Icon,還需要在配置文件中加入:

POWERLEVEL9K_MODE='nerdfont-complete'

這一行參數才行,這樣在一些可以顯示字符Icon的命令行裏就可以看到漂亮的Icon圖標啦,比如下面這個進入到Git目錄中的顯示效果:

讓 PowerLevel9K 主題顯示圖標字符 —— From AigeStudio

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章