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