gpt4 book ai didi

git - 在 Zsh 中获得指示 Git-branch 的提示

转载 作者:IT王子 更新时间:2023-10-29 00:43:58 25 4
gpt4 key购买 nike

我在 .zshrc 中单独运行以下代码作为我的提示未成功。这表明我显然没有名为 __git_ps1 的程序。它不在 MacPorts 中。

#1

PROMPT="$(__git_ps1 " \[\033[1;32m\] (%s)\[\033[0m\]")\$"$

#2

PROMPT="$(__git_ps1 " (%s)")\$"$

#3

# Get the name of the branch we are on
git_prompt_info() {
branch_prompt=$(__git_ps1)
if [ -n "$branch_prompt" ]; then
status_icon=$(git_status)
echo $branch_prompt $status_icon
fi
}

# Show character if changes are pending
git_status() {
if current_git_status=$(git status | grep 'added to commit' 2> /dev/null); then
echo "☠"
fi
}
autoload -U colors
colors
setopt prompt_subst
PROMPT='
%~%{$fg_bold[black]%}$(git_prompt_info)
→ %{$reset_color%}'

如何获得显示 Git 分支名称的提示?

最佳答案

__git_ps1 来自 git-completion.bash。在 zsh 中,您可能必须提供自己的函数来确定当前目录 git 分支。有不少blog posts关于 git prompt对于 zsh。

你只需要:

  • 提供分支名称的函数
  • 启用提示(命令)替换
  • 将函数添加到您的提示中

例如

git_prompt() {
ref=$(git symbolic-ref HEAD | cut -d'/' -f3)
echo $ref
}
setopt prompt_subst
PS1=$(git_prompt)%#
autoload -U promptinit
promptinit

更新:使用 zsh vcs_info 模块代替 git_prompt()

setopt prompt_subst
autoload -Uz vcs_info
zstyle ':vcs_info:*' actionformats \
'%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
zstyle ':vcs_info:*' formats \
'%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{5}]%f '
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r'

zstyle ':vcs_info:*' enable git cvs svn

# or use pre_cmd, see man zshcontrib
vcs_info_wrapper() {
vcs_info
if [ -n "$vcs_info_msg_0_" ]; then
echo "%{$fg[grey]%}${vcs_info_msg_0_}%{$reset_color%}$del"
fi
}
RPROMPT=$'$(vcs_info_wrapper)'

关于git - 在 Zsh 中获得指示 Git-branch 的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1128496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com