我目前寫Code的經驗大約兩年多,最常使用的程式就是terminal,不管是使用python、C++、Vim或是Git等軟體。但是最近和前同事吃飯,才發現原來高手都會將自己的terminal換成是自己喜歡的風格,寫Code的時候也會比較舒適。在這邊紀錄一下,如何將terminal轉換成其他風格。
在進行terminal轉換前,先要了解什麼是terminal、什麼是shell?
terminal是一種可以讓使用者輸入資訊,並且將結果輸出的一種環境。例如:電腦可以藉由鍵盤讓使用者輸入資訊,並且藉由螢幕將結果顯示出來,這就是terminal;或是序列傳輸的input、output,這也是一種terminal。所以一台machine,可以有很多個terminal。
而shell指的是「為使用者提供使用者介面」的軟體,通常指的是command line的解析器。使用者想要對kernel進行溝通:可以透過shell來下command,shell再將使用者的command進行解析並轉成kernel能理解的command,最後kenel就能執行使用者的需求。
不同作業系統中,擁有不同的shell,分別對其作業系統的kernel做溝通;其中:windows預設shell是cmd或PowerShell;linux預設shell是bash;而MacOS預設shell是zsh(以前是bash)。
而當你打開一個terminal時,操作系統會將terminal和shell關聯起來,當我們在terminal中輸入命令後,shell就負責解釋並執行命令。
最後整理一下:
terminal = text input/output environment
shell = command line interpreter
其他詳細的解釋,請參考這裡。
zsh
Zsh與Bash類似,是另一個很棒的shell,它比Bash更快,更可自定義。關於Zsh的最酷的事情之一是顏色自定義,你只需使用名為Oh My Zsh的框架即可更改shell的主題和顏色。
然而要將terminal變漂亮,就是使用要zsh以及Oh My Zsh框架,最後選擇自己想要的主題下載即可。
Zsh還具有許多其他有用的功能,包括拼寫校正,在多個終端之間共享命令歷史記錄,命名目錄快捷方式等。
macOS安裝zsh
我自己是參考這裡,來進行安裝。首先,必須要先安裝Homebrew以及 iTerm2。
安裝Homebrew
在終端機命令執行以下命令即可:
$/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安裝iTerm2
在終端機命令執行以下命令即可:
$brew tap homebrew/cask
$brew instal --cask iterm2
安裝好 iTerm2之後,可以打開 Preferences > Profiles > Colors >Color Presets…,設定自己想要的iTerm2 Color Schemes;也可以點網址下載schemes。
安裝 powerline font
因為很多的 theme 會用到很多的特殊 icon,所以 iTerm2 選用的字型必需要支援這種特殊 icon font。所以接者要安裝:Sauce Code Pro Nerd Font Complete。
在終端機命令執行以下命令即可:
$brew tap homebrew/cask-fonts
$brew cask install font-sauce-code-pro-nerd-font
打開Preferences > Profiles > Text > Change Font,將iTerm2字型改成 SauceCodePro Nerd Font。
安裝好 iTerm2以及Homebrew以後,打開 iTerm2,接者開始安裝zsh。
安裝zsh
用 homebrew 進行安裝:
$brew install zsh
並把 zsh 設定為你的預設 shell:
$sudo sh -c “echo $(which zsh) >> /etc/shells”
$chsh -s $(which zsh)
安裝 oh-my-zsh
oh my zsh是一個open source的framework,提供了很多種主題供我們選擇,可以通過配置,來改變terminal的畫面。
在終端機命令執行以下命令即可:
sh -c “$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
安裝完成後,就可以在.zshrc中,修改zsh主題。
ZSH_THEME="agnoster"
想要其他oh-my-zsh theme,可以點擊這裡做設定。
安裝 zsh theme powerlevel9k
powerlevel9k是一個強大的 theme,可以顯示 WiFi 訊號強度、筆電電池電力、CPU loading、system free memory 等等資訊在 terminal上。
powerlevel9k 不是 oh-my-zsh 內建的 theme ,須另外下載:
$git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
編輯 .zshrc ,把 ZSH_THEME 設為 powerlevel9k,並設定要顯示哪些東西在 command line 上:
ZSH_THEME=”powerlevel9k/powerlevel9k”
# 左側
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir dir_writable vcs vi_mode)
# 右側
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs history ram load time)
# 若當前登入的帳號為你的帳號 xxx,就不用特別顯示出來
DEFAULT_USER=”xxx”
# 使用 nerd font 時可以顯示更多 icon。詳情請參考 powerlevel9k wiki
POWERLEVEL9K_MODE=’nerdfont-complete’
其他powerlevel9k的相關設定可以參考這裡。
其他外掛
Auto Suggestions (for Oh My ZSH)
Auto Suggestions 會根據你過去所輸入的指令來提示要輸入的內容。
終端機命令執行以下命令即可:
$git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
接者在.zshrc加入
plugins=(zsh-autosuggestions)
以上是我將MacOS的terminal更改成漂亮風格的歷程,雖然上面指令是參考別人的網站做設定的。但改完terminal之後,讓我寫Code時可以更舒適。
下次在分享,寫Code的另一個工具Vim。