pcwu's TIL Notes


[Zsh] Oh-My-Zsh 筆記

用了很多年的 Bash 簡簡單單、平平實實的功能倒也相安無事,直到前一陣子覺得真應該在命令列顯示 git branch ,改了一下 .bash_profile,如下:

### show ,user name, server name, path and git branch: user@server Project (develop) ###
parse_git_branch() {
        git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
     }
     export PS1="\u@\h \[\033[32m\]\W\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

就可以顯示 user@server Project (develop) 如此的 git branch 了。

本來用得好好的倒也沒事,一但開始改了就沒完沒了,不如也來安裝一下 git 指令自動補齊吧?還是什麼其他的?

看了一下大家要改很大都乾脆直接換上 zsh 大大地強化了功能又有很多外掛。

zsh

zsh 現在最紅的管理套件就是: Oh-My-Zsh

安裝 zsh (macOS)
brew install zsh zsh-completions
安裝 Oh-My-Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

安裝好,再來就是換 theme 強化一下命令列顯示的樣式及功能,其中有一個很紅 pure 佈景主題,加了許多功能例如指令執行的時間、還 async 查詢了 git repo 是否有 unpushed/unpulled 的 commits 等等,相當厲害!

不過太強大,一次執行橫跨太多行了,還是喜歡跟 bash 一樣輸入區跟資訊在同一行,故想自己從頭建立一個自己的 theme

找到一個 Tjkrich 主題,相當清爽簡單:

ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[green]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}⚡"
ZSH_THEME_GIT_PROMPT_CLEAN=""

function prompt_char {
	if [ $UID -eq 0 ]; then echo "%{$fg[red]%}#%{$reset_color%}"; else echo $; fi
}

PROMPT='%(?,,%{$fg[red]%}FAIL: $?%{$reset_color%}
)%{$fg[magenta]%}%n%{$reset_color%}@%{$fg[yellow]%}%m%{$reset_color%}: %{$fg_bold[blue]%}%~%{$reset_color%}$(git_prompt_info) %_$(prompt_char) '

RPROMPT='%{$fg[green]%}[%*]%{$reset_color%}'

之後會再配合這篇教學,打造一個自己喜歡的主題。

外掛的部份就再慢慢摸索了。