【问题标题】:Dynamic elements in bash PS1bash PS1 中的动态元素
【发布时间】:2011-04-03 19:44:57
【问题描述】:

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

【问题讨论】:

  • 如果你正在使用 git bash 补全(这很棒),你可以把 $(__git_ps1) 放在那里,并更健壮地获得分支名称 - 如果你是中期变基,请反馈等 - 以及有关您的工作树状态的指标(修改、分阶段修改)。

标签: git bash prompt ps1


【解决方案1】:

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

【讨论】:

  • 感谢一堆工作。我有一个使用随机颜色的提示,我称之为... \[\$(randomColor)\] 在那种情况下,我不希望它们被计算在内,在这种情况下我会这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
相关资源
最近更新 更多