5

我在 ~/.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
}
4

1 回答 1

7

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

于 2010-08-25T16:07:06.887 回答