在月初召開的 WWDC 2019 上,Apple 公佈了下一代 macOS —— macOS Catalina。除了全新的音樂和電視等 app、支持 iPad 作爲外置顯示器等顯而易見的更新,macOS Catalina 還爲專業用戶帶來了一項重大變化 —— Zsh 將取代 Bash,成爲操作系統的默認 Shell。
儘管 Apple 沒有對這一改變作出解釋,但根據 The Verge 的 猜測,這可能與 GPLv3 協議有關。macOS 目前使用的 Bash 3.2 版本基於 GPLv2 協議,但新版 Bash 已經轉移到了 GPLv3 協議。GPLv3 協議對 Apple 這樣的大公司有着更嚴格的限制,這可能是 Apple 不再將 Bash 作爲默認 Shell 的原因。
而相比 Bash 來說,Zsh 也擁有許多更強大的功能:更智能的自動補全、命令選項提示、更豐富的主題,等等。在今秋體驗到 macOS Catalina 正式版之前,我們可以先將 macOS 的默認 Shell 切換到 zsh,熟悉一下新版 Shell 的功能。
本文的目標,就是要幫你打造一個好看、好用的 Zsh 終端。
一個漂亮又強大的終端
Zsh 與 Oh My Zsh
Zsh 本體有着強大的功能,但礙於其複雜的配置,對普通用戶而言並不太適合。但是,一個開源項目的出現打破了這一局面 —— 它就是本文的主角:Oh My Zsh。藉助 Oh My Zsh,你只需要進行極爲簡單的安裝配置,就可以用上 Zsh,並享受許多酷炫的功能,下面就讓我們正式開始安裝過程。
安裝 Oh My Zsh
macOS Mojave 已經自帶了 Zsh,所以我們直接安裝 Oh My Zsh。安裝過程極爲簡單,打開終端,執行一行命令即可:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
在安裝過程中會提示 Do you want to change your default shell to zsh? [Y/n](是否將默認 Shell 切換到 Zsh),按下 Y 並回車即可。隨後會提示 Password for xxx,輸入你的用戶密碼並回車即可。當你看見大大的 Oh my zsh 標誌時就表示 Oh My Zsh 已經安裝成功了。
顯示「Oh my zsh」表示安裝成功
基本設置
安裝好 Oh My Zsh 後,使用以下命令打開 Zsh 的設置文件:
vim ~/.zshrc
在 vim 編輯器下,你可以使用方向鍵移動光標,按 i 進入編輯模式,編輯好後按 esc 退出編輯模式,隨後輸入 :wq 並回車即可保存。有關 Vim 的更多使用方法你可以參考 這篇教程。另外,Mac 下的 Vim 默認是沒有顯示行號 & 開啓語法高亮的,你可以參考以下命令打開行號顯示 & 語法高亮:
cp /usr/share/vim/vimrc ~/.vimrc#複製 vim 配置模版echo 'syntax on' >> ~/.vimrc#開啓語法高亮echo 'set nu!' >> ~/.vimrc#開啓行號顯示
Zsh 的配置文件中提供了詳細的註釋,你可以根據註釋修改相關設置,滿足自己的要求。例如,你想關閉 Zsh 的自動更新,則定位到 DISABLE_AUTO_UPDATE 一行,根據前面的註釋,刪除行前的註釋符號 # 即可。
關閉自動更新
保存退出之後,使用以下命令使 Zsh 的配置立即生效:
source ~/.zshrc
設置主題
Oh My Zsh 自帶了大量主題文件。你可以執行以下命令查看自帶的主題:
ls ~/.oh-my-zsh/themes
對於自帶主題的樣式和呈現效果,你可以前往 Oh My Zsh 的 官方 Wiki 查看。
在這裏,我選擇使用 agnoster 作爲我的主題。我們需要通過編輯 zsh 配置文件來修改主題:
vim ~/.zshrc
定位到 ZSH_THEME 一行,將雙引號中的內容修改爲自己選擇的主題名即可。
修改主題名
保存退出後,執行以下命令使 zsh 的配置立即生效:
source ~/.zshrc
安裝 Powerline 字體
主題設置完成後,終端中卻出現了亂碼的字符:
亂碼字符
這是由於我使用的 agnoster 主題中含有特殊字符,需要安裝 Powerline 字體支持才能正常顯示。打開終端,參考以下命令安裝 Powerline 字體:
cd ~/Downloads && git clone https://github.com/powerline/fonts.git#將 Powerline 字體文件下載到「下載」文件夾中cd fonts && ./install.sh#安裝所有 Powerline 字體cd && rm -rf ~/Downloads/fonts#刪除下載的字體文件
隨後,我們按 ⌘, 打開終端偏好設置,在「描述文件 > 文本」中更改字體。
更改字體選項
在彈出的窗口中選擇一款 Powerline 字體(所有可選項請參考 Powerline 的 GitHub 頁面),調整一下字體大小即可。在這裏我選擇了 DejaVu Sans Mono for Powerline 字體(逮蝦戶!),大小設置爲 14 磅。
我的字體設置
此時回到終端,發現表示文件目錄的箭頭已經可以正常顯示了:
Powerline 字體可以在 agnoster 主題中正常顯示
配置終端顏色方案
主題上的配置至此就差不多了,然而 macOS Mojave 默認終端的黑底白字看起來還是有些不舒服。在這裏,我們不妨使用 Solarized 配色方案來進一步美化終端。首先,使用以下命令下載 Solarized 配色方案:
cd ~/Downloads && git clone git://github.com/altercation/solarized.git#將配色方案下載到「下載」文件夾中
下載完畢後,我們按 ⌘, 打開終端偏好設置,點擊「描述文件 > ⚙︎⌄ > 導入」。
導入選項
在彈出的窗口中,定位到 Downloads > solarized > osx-terminal.app-colors-solarized,雙擊 Solarized Dark ansi.terminal 導入暗色的 Solarized 配色方案。
選擇下載好的 Solarized 配色方案
隨後,我們在描述文件中選中 Solarized Dark ansi,點擊「默認」將其設爲默認配色方案;別忘了把字體改爲 Powerline 字體並調整大小。
別忘記改字體
配色細節修改
重啓一下終端,到這裏,我們漂亮的終端已經基本完成了,但是現在的配色讓人有些看不清字:
有些看不清字
重度強迫症的我肯定不能接受。因此我們按 ⌘, 打開終端偏好設置,點擊「描述文件 > Solarized Dark ansi」,對配色進行進一步的自定義。單擊你想要更改的顏色,在彈出的小窗口中點選拾色器(像吸管一樣的東西)。
拾色器
隨後,你可以參考下圖把顏色一項一項吸過去。這裏我的配置綜合了 iTerm 2 的配色和個人的少量修改。
配色方案參考
還有一項讓我不爽的地方 —— 文件目錄前那個長長的 demo@Stevens-MacBook-Pro。通過修改主題配置文件,我們就能去掉它。使用以下命令編輯 agnoster 主題的配置文件:
vim ~/.oh-my-zsh/themes/agnoster.zsh-theme
定位到以下內容:
# Context: user@hostname (who am I and where am I)prompt_context() {if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; thenprompt_segment black default "%(!.%{%F{yellow}%}.)%n@%m"fi}
在 prompt_segment black default "%(!.%{%F{yellow}%}.)%n@%m" 前面加一個註釋符號 #,保存退出,執行 source ~/.zshrc 使配置立即生效即可。
配置插件
Oh My Zsh 支持許多強大的插件,可以實現語法高亮、命令自動補全等功能。你可以執行以下命令查看自帶的插件:
ls ~/.oh-my-zsh/plugins/
對於自帶插件的功能及使用,你可以前往 Oh My Zsh 官方 Wiki 查看。
要啓用某個插件,只需要用 vim ~/.zshrc 編輯 zsh 配置文件,定位到 plugins 一行,在括號中添加需要的插件名稱,以空格分隔。保存退出後,別忘了執行 source ~/.zshrc 使配置立即生效。
修改 plugins 一行的配置啓用插件
我使用的插件git
默認啓用的插件,提供了各種 git 命令的縮寫。其 官方說明 提供了所有縮寫的參考。
z
自帶插件,添加到配置文件中即可啓用,可以幫助你快速跳轉到訪問過的文件夾。具體使用方法請自行 Google 或參考 GitHub 文檔。
zsh-syntax-highlighting
輸入正確的常用命令會以綠色高亮顯示,輸入錯誤則會顯示其他的顏色。使用以下命令安裝:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
下載完成後,別忘了把 zsh-syntax-highlighting 添加到配置文件的 plugins 中,並執行 source ~/.zshrc 使配置生效。
zsh-autosuggestions
輸入命令時,會用淺色字體給出建議的命令,按 → 即可自動補全。使用以下命令安裝:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
下載完成後,別忘了把 zsh-autosuggestions 添加到配置文件的 plugins 中,並執行 source ~/.zshrc 使配置生效。
爲了讓提示的字體顏色正確顯示,我們還需要執行:
echo "export TERM=xterm-256color" >> ~/.zshrc#聲明終端類型echo "ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=10'" >> ~/.zshrc#設置建議命令的文字顏色
你可以修改 fg= 後的數字來指定建議命令的文字顏色,數字與顏色的對應表請參考 這裏。
小結
至此,你已經完成了 Oh My Zsh 在 macOS 下的基本配置。現在你獲得了一個更漂亮、更強大的終端,相信這能讓你在終端下進行操作時事半功倍。
更多Mac教程,請關注macdown瞭解。