Nic Lin's Blog

喜歡在地上滾的工程師

iTerm2 + zsh shell on Mac OSX

zsh是一種Shell,與bash, tesh等等shell很像,不過他多了一些很方便的人性化功能,例如在tab的時候會幫你找出相似的路徑或檔案,可以直接選取來幫你補上命令列,如果遇到指令的錯誤還會嘗試幫你糾正。

不過他最厲害的是有oh-my-zsh的plugin可以使用,可以替代很多原本會寫的設定,以外掛的方式掛進去,而且還有很多theme可以選,以及客製化。

這篇文章就以Mac OSX 來作安裝說明,畢竟Debian/Ubuntu Linux不太一樣,需要自行安裝zsh。

使用iTerm2替換掉Mac原生terminal

一般來說用Mac進行程式開發的設計師很少使用原生的Terminal進行開發,多半都是使用iTerm2,並自行設定配色與字體,安裝方式很簡單,到 http://www.iterm2.com/下載後拖拉到應用程式,並打開就可以使用,接下來我們在搭配zsh來使用,就可以做出更強大又美觀的Terminal來開發囉。

1.Install zsh

chsh -s /bin/zsh

2.Install oh-my-zsh

curl -L http://install.ohmyz.sh | sh

3.修改theme

#ZSH_THEME="robbyrussell" <-- 將這行註解掉
ZSH_THEME="agnoster"

4.安裝 agnoster 所需字型

由於 agnoster 需要特殊字型。 所以必須安裝 patched 過的三個字體:https://gist.github.com/1595572。(下載後雙擊安裝這三個字體。)

5. 安裝 SOLARIZED 布景

SOLARIZED 布景是特殊調製的一個背景。按此 下載 最新版本。

解壓縮後裡面有很多布景。

6.替換掉 iTerm 布景

  • Preference -> Profiles -> Colors -> Load Presets -> Import,載入 iterm2-colors-solarized 目錄下的兩個 itermcolors
  • Preference -> Profiles -> Colors -> Load Presets,載入 Solarized Dark

7.替換掉 iTerm 字型

  • Preference -> Profiles -> Text 換成 Menlo 14 字體

8.替換掉 agnoster 的 theme source code

修改 ~/.oh-my-zsh/themes/agnoster.zsh-theme 換成以下內容

https://gist.github.com/agnoster/3712874/raw/c3107c06c04fb42b0ca27b0a81b15854819969c6/agnoster.zsh-theme

9.客製化裝置名稱

打開檔案,編輯他

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" ]]; then
    prompt_segment black default "%(!.%{%F{yellow}%}.)$USER@%m"
  fi
}

修改為

# Context: user@hostname (who am I and where am I)

prompt_context() {
  if [ $DEFAULT_USER ]; then
    prompt_segment blue 7 "%(!.%{%F{yellow}%}.)$DEFAULT_USER"
  elif [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
    prompt_segment blue 7 "%(!.%{%F{yellow}%}.)$USER@%m"
  fi
}

11.簡化路徑

找到以下

# Dir: current working directory

prompt_dir() {
  prompt_segment blue black '%~'
}

替換成

# Dir: current working directory

prompt_dir() {
  prompt_segment 7 black '%c'
}

12. 加入Ruby version判斷

vim ~/.oh-my-zsh/themes/agnoster.zsh-theme

檔案內任意新增以下程式碼

# Ruby version

prompt_ruby() {
  grep 'rails' 'Gemfile' >/dev/null 2>&1
  if [ $? -eq 0 ]; then
    local ruby_version=''
    if which rvm-prompt &> /dev/null; then
      ruby_version="$(rvm-prompt i v g)"
    else
      if which rbenv &> /dev/null; then
        ruby_version="$(rbenv version | sed -e "s/ (set.*$//")"
      fi
    fi
    prompt_segment red default "$ruby_version"
  fi
}

已經寫好RVM的ruby version block就將其內容載入

找到以下並加入prompt_ruby

Main prompt

build_prompt() {
  RETVAL=$?
  prompt_status
  prompt_context
  prompt_dir
  prompt_ruby
  prompt_git
  prompt_end
}

13.載入美化設定

一樣去編輯剛剛的檔案

vim ~/.oh-my-zsh/themes/agnoster.zsh-theme

在第一行加入以下內容

DEFAULT_USER="Nic"

之後再重新 source ~/.zshrc,就可以完成介面美化囉。

comments powered by Disqus