Oh My Terminal! 實用與裝X齊飛記

程式猿何大叔發表於2019-03-04

工欲善其事,必先利其器

今天窗外雨兒淅瀝,本叔心裡異常平靜,獻上一篇如何打造我們 Mac 上好用的終端紀實。落霞與孤鶩齊飛,實用與裝X並濟!

注:以下的步驟我都親身實踐過,環境 macOS Sierra 10.12,我相信無論比我高或者是低版本的系統都能夠正確執行,請大家放心。

最終效果圖:

圖片

關於 iTerm2 與 「Oh My Zsh」

iTerm2 是網上大家公認的在 Mac 上最好用的終端工具,比系統自帶的 Terminal 智慧和強大,詳細的操作大法等大叔積累夠了再出一篇文章。終端工具通俗理解就是 Windows 下的 CMD。(Emmmmm...沒用過的同學就算了)

而 「Oh My Zsh」 就厲害了,不過還是要說一下 Shell。

我們都知道 Mac 的作業系統是基於 Linux/Unix 進行開發的,其實 Windows 也是,人家一開始不承認,最後面不得已才說借鑑了一部分 Linux/Unix,呵呵。言歸正傳,Shell是Linux/Unix的一個外殼,你理解成衣服也行。它負責外界與Linux核心的互動,接收使用者或其他應用程式的命令,然後把這些命令轉化成核心能理解的語言,傳給核心,核心是真正幹活的,幹完之後再把結果返回使用者或應用程式。

Linux/Unix提供了很多種Shell,為毛要這麼多Shell?其實就是那些大牛程式設計師看到不爽的Shell,就會自己重新寫一套,慢慢形成了一些標準,常用的Shell有這麼幾種,sh、bash、csh等,想知道你的系統有幾種shell,可以通過以下命令檢視:

$ cat /etc/shells
複製程式碼

顯示如下:

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
複製程式碼

這裡 Mac 會比 Linux 多預裝了一份 zsh。目前常用的 Linux 系統和 OS X 系統的預設 Shell 都是 bash,但是真正強大的 Shell 是深藏不露的 zsh。但由於複雜的配置,導致很長一段時間都無人問津,直到有一天,國外有個窮極無聊的程式設計師開發出了一個能夠讓你快速上手的 zsh 專案,叫做「oh my zsh」,Github網址:github.com/robbyrussel…

步驟1:下載並安裝 iTerm2

官方下載網址:www.iterm2.com/

下載好安裝就行了,沒有什麼特別需要注意的。

注意:以下所涉及到的命令,若沒有特殊宣告,都是在 iTerm2 上執行的。

步驟2:下載並安裝 「Oh My Zsh」

開啟 iTerm2,並在該終端上執行以下命令:

curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
複製程式碼

這句命令意思就是下載該指令碼並執行

步驟3:下載並安裝 Powerline

Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome, i3 and Qtile.

說白了 Powerline 就是用 Python 寫的可以美化終端輸出的指令碼,而且支援多種終端。

首先檢視本機是否有安裝 pip:

$ pip --version
複製程式碼

如果沒有成功輸出版本資訊的話,那就先安裝 pip:

$ sudo easy_install pip
複製程式碼

如果已經確認本機有安裝的話,那就來正式安裝 Powerline:

$ pip install powerline-status
複製程式碼

如果在這步提示因為許可權不足無法成功安裝的話(一般是 macOS Sierra 以上的使用者),是因為蘋果官方的 SIP 安全保護策略,以下步驟可以暫時關閉,等我們安裝好再重新開啟,可以放心操作。

關閉 SIP 操作:

  1. 點選 Mac 電腦左上角的蘋果 Logo,選擇重新啟動
  2. 電腦關閉後,重新啟動前,按住 command+R,直到進入 「還原模式」
  3. 選擇頂部選單欄上的使用工具,然後點選 終端
  4. 輸入 csrutil disable,按下回車,提示成功關閉
  5. 重啟電腦

這樣就將 SIP 關閉了,重啟電腦後重新在 iTerm2 上執行安裝 powerline 的命令

安裝完後,可以出於安全性考慮,我們還是把 SIP 啟動,以保護我們的電腦吧!

開啟 SIP 操作:

  1. 點選 Mac 電腦左上角的蘋果 Logo,選擇重新啟動
  2. 電腦關閉後,重新啟動前,按住 command+R,直到進入 「還原模式」
  3. 選擇頂部選單欄上的使用工具,然後點選 終端
  4. 輸入 csrutil enable,按下回車,提示成功關閉
  5. 重啟電腦

步驟4:下載並安裝 Powerline 下的字型庫

字型庫的 Github 倉庫地址:github.com/powerline/f…

Step 1: 將倉庫 git clone 下來,然後進入到 install.sh 指令碼檔案所在的目錄;
Step 2: 執行命令安裝字型庫:

$ ./install.sh
複製程式碼

安裝完成後,會提示所有字型安裝到了 ~/Library/Fonts 資料夾下

步驟5:設定 iTerm2 的 Regular Font 和 Non-ASCII Font

如下圖所示,把 iTerm2 的設定裡的 Profile 中的 Text 選項卡中裡的 Regular FontNon-ASCII Font 的字型都設定成 Powerline 的字型。(可以注意到,Powerline 字型名稱後面都有加 powerline 字樣,很好區分)

圖片

步驟6:下載並安裝終端配色方案

配色方案的 Github 倉庫地址:github.com/altercation…

Step 1: 將倉庫 git clone 下來,然後進入到資料夾;
Step 2: 雙擊 Solarized Dark.itermcolorsSolarized Light.itermcolors 兩個檔案就可以把配置檔案匯入到 iTerm2 的配色方案列表裡;
Step 3: 設定 iTerm2 的配色方案;

圖片

步驟7:下載並安裝終端 agnoster 主題

主題有很多種,這裡選擇了 agnoster 主題,大家熟悉操作之後,可以自己尋找主題並安裝

agnoster 主題的 Github 倉庫:github.com/fcamblor/oh…

Step 1: 將倉庫 git clone 下來,然後進入到資料夾;
Step 2: iTerm2 上執行 install 檔案,主題將安裝到 ~/.oh-my-zsh/themes 目錄下
Step 3: 為 zsh 設定該主題

$ vim ~/.zshrc
# 找到 ZSH_THEME 欄位,並修改成:ZSH_THEME="agnoster"
複製程式碼

步驟8:使用 zsh-syntax-highlighting 增加指令高亮效果

使用該工具的作用是當我們在終端上輸入正確或成功執行的命令時,會綠色提示;相反不成功或錯誤命令時,會有紅色警告提示。

zsh-syntax-highlighting 的 Github 倉庫地址:github.com/zsh-users/z…

Step 1: 進入 ~/.oh-my-zsh/custom/plugins/ 目錄;
Step 2: 將倉庫 git clone 到當前目錄;
Step 3: 在 .zshrc 檔案中追加如下內容

plugins=(zsh-syntax-highlighting)
source ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
複製程式碼

Step 4: 最後過載配置檔案

$ source ~/.zshrc
複製程式碼

這樣就同時配置好了zsh和oh-my-zsh。

至此,所有配置操作已經結束。可以酷炫地使用屬於你的 iTerm2 了!

優化步驟:配置 Finder 當前目錄開啟 iTerm2

有時候我們想在 Finder 的當前目錄下開啟 iTerm2,以避免在 iTerm2 手動進入相應路徑,網上有介紹使用 Go2Shell 外掛的用法,在這裡我推薦使用 Mac 自帶的 Automator 建立 AppleScript 以執行完成我們的需求。

在 Launchpad 中開啟 Automator:

圖片

選擇 檔案 -> 新建 -> 服務

圖片

選擇 AppleScript 並貼上進指令碼程式碼:

圖片

程式碼如下:

on run {input, parameters}

    tell application "Finder"
        set pathList to (quoted form of POSIX path of (folder of the front window as alias))
        set command to "clear; cd " & pathList
    end tell

    tell application "System Events"
        -- some versions might identify as "iTerm2" instead of "iTerm"
        set isRunning to (exists (processes where name is "iTerm")) or (exists (processes where name is "iTerm2"))
    end tell

    tell application "iTerm"
        activate
        set hasNoWindows to ((count of windows) is 0)
        if isRunning and hasNoWindows then
            create window with default profile
        end if
        select first window

        tell the first window
            if isRunning and hasNoWindows is false then
                create tab with default profile
            end if
            tell current session to write text command
        end tell
    end tell

end run
複製程式碼

貼上完後,按 command+s 以儲存,在彈出的提示框內輸入該服務的名字,自定義就好。

接下來設定一下直接呼叫該服務的鍵盤快鍵鍵:

圖片

完成!

相關設定

  1. 啟動 iTerm2 預設使用 bash 改用 zsh 解決方法:$ chsh -s /bin/zsh
  2. 如果想切換回原來的 bash:$ chsh -s /bin/bash
  3. ⌘+Q 關閉 iTerm2 時每次彈窗提示問題: iTerm 2 中,進入 Preference-General-Closing 欄目,將 Confirm "Quit iTerm2(⌘Q)" command選項勾選去掉就行
  4. 路徑字首的XX@XX太長,縮短問題: 在 ~/.oh-my-zsh/themes 路徑下找到 agnoster.zsh-theme 檔案,可使用文字工具開啟,將裡面的 build_prompt 下的 prompt_context 欄位在前面加#註釋掉即可。

結語

工作和興趣上努力讓自己變得酷一點,生活上努力讓自己變得更溫暖一點。

另外,很感謝你閱讀完了本文,我相信你與眾不同。


微信公眾號

相關文章