git mac os zsh www.example.com 无法使颜色工作

utugiqy6  于 2023-04-28  发布在  Git
关注(0)|答案(3)|浏览(136)

我复制 www.example.com (https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh)到~/。git-prompt.sh
然后在我的。zsrhc我有

source ~/.git-prompt.sh
setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '

分支露出来了,但没有颜色。

idv4meu8

idv4meu81#

在第557行中启用着色:

# NO color option unless in PROMPT_COMMAND mode
if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
    __git_ps1_colorize_gitstring
fi

你可以去掉整个if条件,只留下__git_ps1_colorize_gitstring,或者启用precmd,它是PROMPT_COMMAND的ZSH等价物,pcmode在这里代表什么,并启用GIT_PS1_SHOWCOLORHINTS:

$ source ~/.git-prompt.sh
$ GIT_PS1_SHOWCOLORHINTS=true
$ precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
sczxawaw

sczxawaw2#

Git upstream中有一个bug,我已经多次发送修复程序。
我的fork里有fixgit-completion
但是,您仍然需要设置GIT_PS1_SHOWCOLORHINTS=1

woobm2wo

woobm2wo3#

请注意,一旦颜色起作用,你可以得到 * 另一个问题:“I have a fancy prompt with colors, and now bash doesn't seem to know how wide my terminal is. Lines wrap around incorrectly
为此,请使用With Git 2。41(2023年第2季度),取消了彩色提示只能与PROMPT_COMMAND模式一起使用的限制。
参见commit 7ee1af8(2023年2月28日),作者Felipe Contreras ( felipec )
(由Junio C Hamano -- gitster --合并于commit 6041a13,2023年3月28日)

completion:提示:使用常规颜色

签字人:费利佩·孔特雷拉斯
测试人:Joakim Petersen
1bfc51a中引入提示命令模式时(Allow __git_ps1 to be used in PROMPT_COMMAND,2012-10-10,Git v1.8.1-rc 0--merge)(Allow __git_ps1 to be used in PROMPT_COMMAND, 2012-10-10),假设是为了在bash中正确地向PS1添加颜色,这是必要的,但这不是真的。
确实,\[ \]标记添加了正确计算提示符宽度所需的信息,它们必须直接添加到PS1,返回它们的函数不起作用。
但这是因为bash将PS1中的\[ \]标记转换为\001 \002,这是readline最终需要的,以便计算宽度。
我们不需要bash来做这个转换,我们可以自己使用\001 \002,然后提示命令模式就不需要显示颜色了。
这就是返回颜色的函数应该做的事情。

相关问题