我复制 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)")]\$ '
分支露出来了,但没有颜色。
我复制 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)")]\$ '
分支露出来了,但没有颜色。
3条答案
按热度按时间idv4meu81#
在第557行中启用着色:
你可以去掉整个if条件,只留下
__git_ps1_colorize_gitstring
,或者启用precmd
,它是PROMPT_COMMAND的ZSH等价物,pcmode
在这里代表什么,并启用GIT_PS1_SHOWCOLORHINTS:sczxawaw2#
Git upstream中有一个bug,我已经多次发送修复程序。
我的fork里有fix:git-completion。
但是,您仍然需要设置
GIT_PS1_SHOWCOLORHINTS=1
。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,然后提示命令模式就不需要显示颜色了。
这就是返回颜色的函数应该做的事情。