bash PS1中的动态元素

时间:2010-08-25 15:44:39

标签: git bash prompt ps1

我在〜/ .localsh文件中添加了以下内容,以便在使用git时自定义我的bash提示符。

基本上我想让我的终端显示当前分支。 gitk工具显示带有绿色背景和黑色前景的分支,这就是我正在尝试做的事情。

我的工作原理,但是当我按下键盘上的向上箭头以回滚以前的命令时,它会被覆盖。

这个东西碰巧发生在你以前没有用[\ e [0m]结束颜色序列的时候。 现在,由于调用了getgitbranch函数,它正在发生在我身上。我认为它与终端有关,不知道提示有多长。

所以,继承人的问题...... 如何在我的bash提示中正确使用动态元素,而不是在使用向上箭头时使用动态元素?

function getgitbranch()
{
git branch | grep "^\*" | cut -c3-
}

function blabla()
{
PS1=""
PS1="$PS1\[\e[0;30m\]\[\e[42m\]\[\$(getgitbranch)\]\[\e[0;49m\]\[\e[0m\] "
PS1="$PS1\[\e[1;35m\][\[\e[0m\]"
PS1="$PS1\[\e[1;33m\]\w\[\e[0m\]"
PS1="$PS1\[\e[1;35m\]]\[\e[0m\]"
PS1="$PS1 \[\e[1;31m\]>\[\e[0m\] "
export PS1
}

1 个答案:

答案 0 :(得分:5)

\[\]周围移除$(getgitbranch)。该函数输出的字符实际上占据了屏幕上的空间,因此您希望Bash考虑它们。使用\[\]计算出现在其中的字符。