[英]Configure git branch in prompt
我已經更新了bash文件,以便按照此處的說明顯示當前的Git分支。 我最終使用的是
PS1="\u@\h \W \$(__git_ps1)\$ "
然而...
(branch)
替換為[branch]
,即在括號內而不是括號內顯示分支名稱。 原始版本有顏色:
PS1="\\[$GREEN\\]\\t\\[$RED\\]-\\[$BLUE\\]\\u\\[$YELLOW\\]\\[$YELLOW\\]\\w\\[\\033[m\\]\\[$MAGENTA\\]\\$(__git_ps1)\\[$WHITE\\]\\$ "
但是當我使用它時,我沒有看到任何顏色。 我如何看到顏色,外殼的標准設置是什么?
這是.git-prompt.sh
文件的相關段落(在現代Git版本中,該文件包含__git_ps1
函數的定義):
# 3a) Change your PS1 to call __git_ps1 as
# command-substitution:
# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
# the optional argument will be used as format string.
__git_ps1
接受一個可選參數,可用於自定義字符串的格式。 在您的情況下,您應該使用
PS1="\u@\h \W \$(__git_ps1 '[%s]')\$ "
您可以像在問題代碼中那樣使用顏色,但是您需要確保定義了有關變量。 將以下幾行放在~/.bashrc
文件中:
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
BLUE=$(tput setaf 4)
MAGENTA=$(tput setaf 5)
WHITE=$(tput setaf 7)
RESET=$(tput setaf 0)
在找到~/.bashrc
文件后,您將可以使用這些顏色。 例如,這是您的提示符的簡化版本,當前分支名稱(和周圍的括號)以紅色突出顯示:
PS1="\W \[$RED\$(__git_ps1 '[%s]')\]\[$RESET\$\] "
您正在使用的__git_ps1
函數將格式字符串作為參數。 因此,您可以使用%s
傳遞任何想要顯示分支名稱的位置。 例如:
PS1="\\u@\\h \\W \\$(__git_ps1 '[%s]')\\$
沒有顏色的線索,對不起。
這有效:
function parse_git_dirty {
[[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working directory clean" ]] && echo "*"
}
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/"
}
PS1="\[$Blue\][\[$Cyan\]\d\[$Blue\]] " # Display date
PS1=$PS1"\[$Yellow\]\@:" # Display time
PS1=$PS1"\[$BGreen\]\w" # Display a green pwd
PS1=$PS1"\[$BCyan\]"'$(parse_git_branch)' # Display a cyan git-branch
PS1=$PS1"\[$Color_Off\]$ " # Turn off color and end prompt
export PS1=$PS1
它產生這樣的東西:
[Thu Sep 18] 12:44 PM:~/repos/test[master*]$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.