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

最佳答案

\[\]周围删除$(getgitbranch)。该功能输出的字符实际上占据了屏幕上的空间,因此您希望Bash解决这些问题。使用\[\]表示不要计算其中出现的字符。

关于git - bash PS1中的动态元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3567743/

10-13 07:32