跳至主要内容

為 MAC 的 Terminal 上色 - 透過 iTerm 2 和 Oh My Zsh 高亮你的終端機

img

奇怪,為什麼你的終端機畫面可以長的這麼好看阿?我的換來換去卻還是長的像我是個 Hacker ...

img

今天,就來讓我們看一下可以怎麼做把 MAC 的終端機畫面用的更有人性吧。

讓 MAC 終端機高亮的過程雖然看起來很複雜又冗長,但是如果你是常會使用終端機的使用者,又希望有一個比較好看的視覺介面,只要按照下面一步步跟著做就可以完成了。

在下面的終端機的指令中,$ 只是表示是終端機指令的開頭,不需要複製輸入到終端機中。

安裝 Homebrew

Homebrew 是 Mac OSX 上的的套件管理工具,是方便安裝管理 OSX 裡需要用到但預設沒安裝的套件。Homebrew 的安裝只需要打開終端機,輸入:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

就可以了。接著可以輸入以下指令確認是否有安裝成功:

brew --version

安裝 iTerm2(Optional)

資訊

macOS 內建的 Terminal 在 Catalina 版本後預設已經改成使用 zsh,因此可以自己使用系統內建的 terminal 而不一定要在額外安裝 iTerm2。

iTerm2 是一個可以用來取代 MAC 原生終端機的工具,擁有許多更方便的功能和特色,只需到官網下載安裝就可以了。

或者也可以在 terminal 中輸入下述的指令,直接透過 homebrew 安裝:

brew install --cask iterm2

iTerm2 / Terminal.app 配色主題下載

iTerm2 提供非常多的配色主題可以下載,可以到 iterm2 color schemes 選擇喜歡的配色,右上角有下載的標示可以整包下載下來,下面則會顯示各種配色:

  • 如果使用的是 iTerm,則進到 repo 中的 schemes 資料夾
  • 如果使用的是 macOS 內建的 Terminal.app,則進到 repo 中的 terminal 資料夾

解壓縮後在 schemes 中有許多副檔名為 .itermcolors 的配色檔可以載入,這裡我們選擇 Solarized Dark Theme Patched Version(下載)

Imgur

iTerm2 套用配色

選好喜歡的配色後,打開 iTerm2 後按快捷鍵 cmd + i ,選擇上方名為 Profiles 的頁籤,接著進到 Colors 頁籤,在右下方的 Color Presets 中透過 import 匯入配色後再點選一次 Color Preset 就可以選取:

Imgur

你也可以在 Iterm2-color-schemes 中下載選擇其他的配色主題,像我個人也蠻喜歡用 Blazer 這個主題配色:

Screen Shot 2020-12-26 at 11.29.20 PM

Terminal.app 套用配色

iterm2 color schemes 中的 terminal 資料夾可以下載主題配色(副檔名會是 .terminal),雙擊檔案便會自動匯入,或者在 Terminal 中使用 import 匯入:

Terminal.app Theme

接著把想要使用的主題切換成 default:

image-20221120121244618

安裝 ZSH

資訊

macOS 內建的 Terminal 在 Catalina 版本後預設已經改成使用 zsh。

接著我們要安裝 ZSH ,這是用來取代 BASH 的一種工具,打開 Terminal 輸入:

brew install zsh zsh-completions

確認安裝成功

zsh --version

接著要將預設終端機窗口改為 ZSH,一樣在終端機輸入:

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

然後重新開啟你的 Terminal ,輸入:

echo $SHELL

如果有成功變更 SHELL 為 ZSH 的話應該會看到 /usr/local/bin/zsh

Change the Shell in Mac OS X Terminal

安裝 Oh My ZSH

Oh My Zsh 是一個用來管理 ZSH 設定檔(configuration)的框架,提供了很多的外掛(plugin)和主題(theme)可以選擇。

安裝的方式一樣是透過 Terminal ,輸入:

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

接下來我們要套用主題,輸入:

open ~/.zshrc

接著會打開 zsh 的設定檔,找到 ZSH_THEME=”…”,將這段的內容改成下面這段後,在透過 cmd + s 存檔:

ZSH_THEME="agnoster"

字體修改

在安裝的過程中,如果你發現出現一些看不懂的文字或亂碼時,很可能是因為沒有相對應的字體,因此我們要下載字體。

下載字體檔:Meslo(截圖中所使用的)或者也可以到 Powerline fonts @ github 中找到其他你要的字體後,在 「view raw」上點右鍵選擇「另存連結」將字體檔下載後並安裝。

在 iTerm2 中套用字體(Meslo):iTerm --> Preferences --> Profiles --> Text --> Change Font

注意

有可能需要勾選「Use build-in Powerline glyphs」才會正常顯示。

Imgur

補充:透過 homebrew-cask-fonts 下載字體

另一種下載字體的方式是直接透過 homebrew-cask-fonts 下載,在其 Casks 資料夾中可以看到所有可下載字體,如果是 Terminal 要使用的話,記得要找 for-powerline 結鬼的。例如:

brew tap homebrew/cask-fonts
brew install font-meslo-for-powerline # 安裝 meslo
brew install font-source-code-pro-for-powerline # 安裝 source code pro

其他外掛或建議

Auto Suggestions (for Oh My ZSH)

Auto Suggestions 會根據你過去所輸入的指令來提示要輸入的內容。

在終端機輸入:

# https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

接著打開 ZSH 設定檔,找到 plugins = “” 的地方,在 plugins 的欄位中加入 zsh-autosuggestion 後存檔(若有多個 plugin 則以空白分開:

plugins=(zsh-autosuggestions)

有時候你的背景色和提是的文字會太過接近,以致於你看不到 autosuggestions 的文字,這時候需要去設定顯示的文字。一樣先在終端機輸入以下文字,以開啟設定檔:

open $ZSH_CUSTOM/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh

打開設定檔後,在文件中找到這行(預設會是 fg=8),這就是給終端機所使用的 256 色碼,你可以改成自己喜歡的顏色,這裡我用 fg=240 感覺比較合適。

ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=240'

接著,只要你輸入過相關的文字,下次再次打入同樣的文字的時候,就會產生自動建議的文字,按下 → 後就會自動帶入,像是這樣的效果:

img

程式碼高亮(Syntax Highlighting)

Install @ GitHub

在終端機輸入下面這段,下載 Syntax Highlighting:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

接著一樣打開 ZSH 設定檔:

open ~/.zshrc

plugins 中加入 zsh-syntax-highlighting

# ~/.zshrc
plugins=( [plugins...] zsh-syntax-highlighting)

客制化 Prompt

在終端機中預設的 prompt 會是”user@hostname”,非常長一串,我們可以透過以下的方式讓那一長串不要顯示出來。

打開 ZSH 設定檔:

open ~/.zshrc

找個地方加入下面這段,DEFAULT_USER 中 “yourname” 要填的是你使用者的名稱,當 username 和 DEFAULT_USER 的值一樣時,就不會顯示最前面的 Prompt:

# .zshrc

# optionally set DEFAULT_USER in ~/.zshrc to your regular username to hide the “user@hostname” info when you’re logged in as yourself on your local machine.
DEFAULT_USER=your_name

如果不知道使用者的名稱的話,可以在終端機輸入 whoami

git-open with oh-my-zsh

如果常使用 git 的話,一般當我們 commit 並 push 完之後,蠻常會到該 repository 的 github 或 gitlab 去發 Pull Request,這時候可以使用 git-open 這個工具,未來只需要在 Terminal 中輸入 $ git open 即可到該 git repository 對應的網站。

git clone https://github.com/paulirish/git-open.git $ZSH_CUSTOM/plugins/git-open

~/.zshrc 的檔案中找到 plugins=(...) 的位置,把 git-open 加進去,變成 plugins=(... git-open)

參考