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

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

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

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

安裝 iTerm2

首先咱們要作的固然是安裝 iTerm2 啦,安裝方式主要分爲兩種:github

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

二者均可以安裝 iTerm2 ,任選一種便可。shell

命令行安裝

命令行安裝主要是經過 brew 命令行工具進行,若是你還沒有安裝過 brew,那麼請先參閱 MacOS 安裝 brew 並配置 caskubuntu

安裝 iTerm2 直接使用如下命令便可:bash

AigeStudio@aige$ brew cask instal iterm2

安裝包安裝

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

配置 iTerm2

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

iTerm2 默認狀態 —— From AigeStudio

咱們能夠經過一系列的設置更改它的色彩讓其變得好看。字體

調整 iTerm2 色彩顯示範圍

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

調整 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

相關文章
相關標籤/搜索