代码之家  ›  专栏  ›  技术社区  ›  Piotr Byzia

将git的分支名称附加到命令提示符

  •  21
  • Piotr Byzia  · 技术社区  · 17 年前

    我想使用Git-complement.bash的一个功能,但我无法自定义我想要的外观。以下是我的.bash_profile的相关部分:

    source ~/.git-completion.bash
    
    function prompt
    {
    local WHITE="\[\033[1;37m\]"
    local GREEN="\[\033[0;32m\]"
    local CYAN="\[\033[0;36m\]"
    local GRAY="\[\033[0;37m\]"
    local BLUE="\[\033[0;34m\]"
    export PS1="
    ${GREEN}\u${CYAN}@${BLUE}\h ${CYAN}\w $(__git_ps1 '(%s)') ${GRAY}
    $ "
    }
    prompt
    

    并且它不显示分支名称。

    但是,如果我用下面的导出PS1替换上面的导出PS1,它会按预期工作:

    export PS1='\w$(__git_ps1 "(%s)") > '
    

    我想是撇号/引号的问题。

    我应该如何更正第一个版本才能使其正常工作?

    2 回复  |  直到 17 年前
        1
  •  33
  •   pts    17 年前

    正确引用的诀窍是让每件事都被双重引用,除了 $(__git_ps1 "(%s)") ,单次引用。

    source ~/.git-completion.bash
    function prompt
    {
    local WHITE="\[\033[1;37m\]"
    local GREEN="\[\033[0;32m\]"
    local CYAN="\[\033[0;36m\]"
    local GRAY="\[\033[0;37m\]"
    local BLUE="\[\033[0;34m\]"
    export PS1="
    ${GREEN}\u${CYAN}@${BLUE}\h ${CYAN}\w"' $(__git_ps1 "(%s)") '"${GRAY}"
    }
    prompt
    

    另一种解决方案是更换 $( \$( 在问题的代码中。

    背景信息:发生了两次替换:第一次是在 export PS1="..." 时间以及稍后显示提示时。你想执行 __git_ps1 每次显示提示时,您必须确保第一个替换保持不变 $(...) '$(...)' "\$(...)" 。这是我提出的解决方案背后的两个基本思想。

        2
  •  5
  •   Macke    17 年前

    不确定,但是 vcprompt 可能会更好地解决这个问题吗?