0

我刚刚编辑了我的 .bash_profile 以添加 git 分支显示。我基于我在网上找到的一个版本,但现在当我在 shell 中写一些东西时,在行尾,它会覆盖第一行,然后它开始换行到新行。

function proml {
  case $TERM in
    xterm*)
     TITLEBAR='\[\033]0;\u@\h:\w\007\]'
    ;;
    *)
    TITLEBAR=""
    ;;
  esac

PS1="${TITLEBAR}\
\w$WHITE\$(parse_git_branch)\\e[m$ "

这是 parse_git_branch 函数

function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/[\1]/'
}

由于我对 bash_profile 了解不多,所以我不知道错误在哪里?

4

2 回答 2

0

假设$WHITE包含用于设置文本颜色的控制代码,您需要将其括起来 \[ ... \]以防止bash认为这些字符会影响提示的长度。

function proml {
  case $TERM in
    xterm*)
     TITLEBAR='\[\033]0;\u@\h:\w\007\]'
    ;;
    *)
    TITLEBAR=""
    ;;
  esac
}

PS1="${TITLEBAR}\
\w\[$WHITE\]\$(parse_git_branch)\[\e[m\]$ "
于 2013-03-27T02:32:00.797 回答
0

这是问题吗?函数末尾缺少大括号proml>?

function proml {
  case $TERM in
    xterm*)
     TITLEBAR='\[\033]0;\u@\h:\w\007\]'
    ;;
    *)
    TITLEBAR=""
    ;;
  esac

PS1="${TITLEBAR}\
\w$WHITE\$(parse_git_branch)\\e[m$ "
}
于 2013-03-26T23:51:39.547 回答