幾分鍾打造超級好看又好用的zsh command line環境


 

注:這篇適用於用MAC 開發的developer

身為程式開發者,很大一部分的時間是在用command line 做事,如果能把command line 調整成好用又酷炫的模樣,不只是效率提升非常多,用起來爽度也比較高

像下面這樣子的command line 是不是比內建的有意思多了?

過去總覺得設定command line 很麻煩,但其實如果不是要客制化很多細節,其實是非常簡單的。這篇文章教大家如何用很簡單的設定方式,就可以做到很酷炫的程度。沒試過的人照着這篇的步驟跑,十多分鍾就可以搞定了~

這篇的做法會依循以下兩個原則,讓不熟自訂zsh 的人可以最輕松的入門:

  • 避免搞亂你的開發環境:僅可能使用homebrew 來安裝需要的套件
  • 盡可能簡化需要理解的概念。除了oh-my-zsh,不引入其他進階的zsh 套件管理工具以及復雜的自訂功能

最后的結果大概會是長這樣:

 

安裝、設定方式

總共有以下步驟:

  1. 安裝iTerm2
  2. 修改iTerm2的color scheme
  3. 安裝powerline font
  4. 安裝zsh
  5. 安裝oh-my-zsh
  6. 安裝zsh theme: powerlevel9k
  7. 設定powerlevel9k

步驟看似很多,但是每一步都很簡單!


安裝iTerm2:

雖然不是必要,內建的Terminal app 也可以,不過iTerm2 還是比較好用,下面的示范也全都是用iTerm2

安裝方式:

#如果你從來沒有用過brew cask的話需要先跑這行
brew tap caskroom/cask #安裝iTerm2
brew cask instal iterm2

安裝好以后,打開iTerm2 檢查Report Terminal Type 的設定,設定路徑:
Preferences > Profiles > Terminal > Report Terminal Type

設為xterm-256color,等等在terminal才能看得到漂亮的顏色

 
iTerm2 Report Terminal Type 選單

修改iTerm2 的color scheme

這步驟很重要,預設的很丑,想要自己的command line 看起來賞心悅目就絕對要換掉預設的

設定路徑:Preferences > Profiles > Colors > Color Presets...

 

內建已經幾個選則可以用,不過幾乎都很難看,iTerm2 Color Schemes有超多可以選,先把整個repo下載到自己的電腦后,然后import到iTerm2:

 

剛才下載下來的iTerm2-Color-Schemes有很多個資料夾,從schemes資料夾里面選一個喜歡的color scheme

 

這邊要注意的是點選了檔案import 以后並不會生效,還要再去color preset 點選你剛import 的scheme 才會生效

我自己是用Tomorrow Night Eighties,優點是對比不會太強比較不刺眼,螢幕盯久了不會不舒服,顏色飽和度也適中,看起來質感比較好。不曉得要選哪一個的人可以試試看

 
https://github.com/mbadolato/iTerm2-Color-Schemes 上的Tomorrow Night Eighties截圖

這篇文章后面的command line 截圖都是用這個color scheme,如果你發現按照我的安裝步驟來做看起來顏色卻不太一樣,那就是你的iTerm2 color scheme 和我不同


安裝powerline font

因為我們要用的theme 會用到很多的特殊icon,所以iTerm2 選用的字型必需要支援這種特殊icon font。這類型的字體統稱為powerline font(另外還有加強版支援更多特殊icon 的叫的nerd font)

沒有安裝的話畫面會長這樣,遇到icon 會變框框問號

 
非powerline font

裝完並設定新字型后的效果:

powerline font

支援powerline的字型很多,我推薦Sauce Code Pro Nerd Font Complete
安裝方式推薦直接用brew安裝比較快又好管理

安裝指令:

#先執行這行,才能用homebrew安裝字型。曾經執行過的人可以跳過這個指令
brew tap caskroom/fonts #安裝指令
brew cask install font-sourcecodepro-nerd-font

如果想要裝別的,brew 上面也有很多字型可以挑。

關鍵字是nerd

brew cask search nerd
 
這么多字型夠挑了吧~

裝完后,記得修改iTerm2 字型設定否則不會生效。請改成SauceCodePro Nerd Font 或你自己下載的字型

設定路徑:Preferences > Profiles > Text > Change Font(參考下圖)

 
修改iTerm2 字型設定

2018–08–02更新:
若你切換字型后,發生iTerm2無法正常運作,有可能是遇到同一字型有復數版本的問題,請按照以下流程修復:

打開Font Book.app ->選擇該字體->選擇自動解決版本問題

注:特別感謝童宇凡的提醒以及Huang Chi Yung這篇回報了這個問題


安裝zsh:

zsh 是個取代bash 的強大shell,比bash 好用幾百倍。這篇文章介紹的command line 設定一定要跑在zsh。沒用過的一定要試一下

一樣用homebrew 安裝:

brew install zsh

並把zsh 設定為你的預設shell:

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

安裝oh-my-zsh

上一步裝完zsh后,就可以開始調整我們想要的command line外觀設定了,但是原始的zsh因為設定太難搞,所以多年前剛出現的時候沒有受到太多關注,直到有人寫了一套叫oh-my-zsh的framework來幫助大家使用zsh,zsh才火了起來。現在幾乎所有zsh好用的工具都有支援oh-my-zsh,所以當然是要裝這東西

安裝指令:

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

注:這會直接執行oh-my-zsh的有疑慮的人可以先稍微研究一下oh-my-zsh github上的,覺得放心再執行install.sh
install.sh

執行完以后如果沒有出現什么錯誤訊息就代表成功了,同時會發現多了oh-my-zsh 的資料夾 ~/.oh-my-zsh


重頭戲!安裝zsh theme powerlevel9k

剛裝完oh-my-zsh以后,預設是使用內建的theme robbyrussell,多了git資訊,顏色也看起來比原生bash好一些:

 

不過oh-my-zsh內建很多theme,在它的github wiki上有很多截圖可以參考

切換內建的theme很簡單,直接修改你的~/.zshrc,把原本改成你想要的:ZSH_THEME=”robbyrussell

#編輯~/.zshrc 
ZSH_THEME=” agnoster ” #試試看把robbyrussell 改成agnoster

任何的zsh 設定修改過后,還要執行以下指令才會生效

exec $SHELL
 
agnoster 看起來是不是比robbyrussell 漂亮多了?

這邊推薦一個超強的theme,powerlevel9k!

文章開頭的圖片就是擷取自powerlevel9k的github

 
圖片來源: https://github.com/bhilburn/powerlevel9k

powerlevel9k 不只是像上面的示范圖顯示一些基本的資訊,還可以做到很屌的事情,比如像下圖那樣,顯示WiFi 訊號強度、筆電電池電力、CPU loading、system free memory 等等資訊在command line

 
圖片擷取自 powerlevel9k github

powerlevel9k 安裝方式:

  1. powerlevel9k不是oh-my-zsh內建的theme ,必須另外下載

指令:

git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

2.編輯你的~/.zshrc,把ZSH_THEME設為powerlevel9k,並設定要顯示哪些東西在command line上:

ZSH_THEME="powerlevel9k/powerlevel9k" # command line左邊想顯示的內容
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir) # <= left prompt設了"dir" # command line右邊想顯示的內容
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(time) # <= right prompt設了"time"

上面的例子我們把左邊設了一個dir,右邊設了time,代表左邊想顯示當前資料夾路徑,右邊顯示時間

設定完后command line看起來會像這樣(記得執行exec $SHELL,設定才會生效):

 
左邊顯示當前資料夾路徑,右邊顯示時間

如果想要有版本控制的資訊,可以在POWERLEVEL9K_LEFT_PROMPT_ELEMENTS加上vcs(vcs為version control system的縮寫)

#編輯~/.zshrc 
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir vcs ) #加上"vcs"

command line 會變這樣:

 
多了git branch 以及git status 資訊

當你進入了一個沒有寫入權限的資料夾時還可以給你提醒:

#加上"dir_writable" 
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_writable vcs)
 
/etc 沒有寫入權限,多出一個鎖頭提醒你

如果你的command line 是設成vi mode ,相信你一定碰過這個困擾,就是不曉得自己是處在normal mode 還是insert mode。沒關系,powerlevel9k 可以幫你解決這個問題:

#加上"vi_mode" 
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_writable vcs vi_mode )

結果如下:

 

上圖告訴我們現在在insert mode

按下ESC后:

告訴你變normal mode 啦~贊吧!


我自己習慣左側的設定放一些常用基本資訊
右邊放一些好用但不是每次下指令都要看的東西

command line 右邊的設定放在 POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS

例如顯示上一個指令的return code:

#加上"status"顯示上一個指令的return code:
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( status time)

如果指令沒出錯,linux return code 為0 時會有個綠色小勾勾:

 
指令正確執行,return code 為 0

如果打了錯誤指令會出現相對應的return code,並且用紅色底色提醒你

 
指令執行錯誤,return code 為127

還可以顯示目前電腦的free memory:

#加上ram,顯示目前的free memory 
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status ram time)
還有4.61G 的記憶體可用

2017/12/30更新:
上圖的最左方有個資料夾icon,且git資訊多顯示了幾個icon,這用原本的設定是看不到的,需要加上這行:

POWERLEVEL9K_MODE='nerdfont-complete'

powerlevel9k的wiki有解釋這個設定的作用,請大家使用時注意一下別忘記加上去


加上CPU load average:

#加上load顯示CPU忙碌程度
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status ram load time)
 
CPU 忙碌程度2.45,還行

顯示電量:

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( battery )
 
還可以用6 小時又11 分

示范了不少,但還有非常非常多東西可以用,請參考這個列表自己玩玩看https://github.com/bhilburn/powerlevel9k#available-prompt-segments

不過有些東西中看不中用,放太多東西也會讓command line 反應變慢,試了各種設定一陣子后,只留下了一些我覺得比較有用的,給大家參考:

#左側
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'

注意:上面的配置必須放置在~/.zshrc中的source $ZSH/oh-my-zsh.sh前

最后…

這篇文章介紹了怎么樣把自己的command line 替換成zsh,並且使用很厲害的powerlevel9k theme,不過zsh 不只是可以換酷炫的theme 而已,更重要的是還有很多比bash 好用的功能可以大幅提升工作效率,又可以裝各種方便的plugin,就留待有機會時再介紹啰

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM