①②⑧ Mac 的 Git 自訂樣式
這次的設定想要滿足三個需求:
- 將全白的 terminal 環境換成更好辨識的顏色、配置
- 在提示行不要顯示全部的路徑,僅顯示當前資料夾
- 顯示目前在 git 的哪一個分支底下
參照此篇文章的方法,略作修改:
最後達成想要的樣子:
步驟
在已經安裝 zsh 的情況下,用以下指令安裝 ohmyzsh:
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
接著,刪除現有的 ohmyzsh 主題檔案 robbyrussell:
rm -rf ~/.oh-my-zsh/themes/robbyrussell.zsh-theme
再創建新的同名主題檔案以替換掉它:
vim ~/.oh-my-zsh/themes/robbyrussell.zsh-theme
vim 打開了檔案之後,輸入以下配置:
NEWLINE=$'\n'
PROMPT="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
PROMPT+=' %{$fg[cyan]%}[$%1~]%{$reset_color%} $(git_prompt_info) ${NEWLINE}'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"
解釋
換行
NEWLINE=$'\n'
從新的一行開始。
顯示上一個命令的退出狀態
PROMPT="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
根據上一個命令的退出狀態,顯示不同顏色的箭頭。
- 如果上一個命令成功執行,提示符將是綠色的 ➜
- 否則,它將是紅色的 ➜
指定目前 working directory 的路徑只顯示當前資料夾
PROMPT+=' %{$fg[cyan]%}[$%1~]%{$reset_color%} $(git_prompt_info) ${NEWLINE}'
一般顯示完整路徑的話,要在顏色後方的中括號裡面填寫$PWD
。改成%1~
只會顯示當前資料夾的名稱。
後方則是 Git 的提示資訊,也就是當前分支,並在最後加上新行。
設定 Git 提示資訊
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
第一行設定 Git 資訊的前綴:%{$fg_bold[blue]%}git:(%{$fg[red]%}
:
%{$fg_bold[blue]%}
: 將文字顏色設定為加粗的藍色。git:(
: 這是直接顯示的字串。%{$fg[red]%}
: 接下來的文字,也就是 Git 分支名稱,設定為紅色。
第二行設定 Git 資訊的後綴:%{$reset_color%}
:
%{$reset_color%}
: 重設上方設定的文字顏色回到預設值,以免後面的文字都變成這樣。- 空格 : 結尾添加的空格,用於分隔 Git 提示和後續的命令提示符元素。
顯示 repository 中是否有未提交的更改
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"
兩行都有的 %{$fg[blue]%})
用來設定後括號 )
的顏色。
第一行:當 git repository 有未提交的更改時,顯示一個黃色的 ✗。
第二行:當 git repository 是乾淨的,裡面沒有未提交的更改時,只顯示後括號。
儲存以上內容,離開 vim 編輯模式後,在命令列輸入:
source ~/.zshrc
更新設定後,就會把剛剛的改變呈現出來囉!
除了有清楚的提示行之外,查找資料時也會把資料夾變成青色,跟檔案做區別。可以參考 ohmyzsh 的 github ,選擇自己喜歡的主題:
謝謝收看!