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