【发布时间】:2013-12-30 02:05:27
【问题描述】:
目标
我正在尝试使用 git 分支(如果可用)在 Mac OS X 上为我的 bash 提示着色。
我的尝试
凭借我有限的 bash 知识,我从 Google 搜索和其他问题中拼凑出以下代码:
function parse_git_branch() {
branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
if [[ -z "$branch" ]]; then
return
fi
if [[ -z "$(git status -s 2>/dev/null)" ]]; then
color=$'\e[1;32m'
else
color=$'\e[1;31m'
fi
echo "\[$color\] (${branch}) "
}
PS1="\h:\W \u\$(parse_git_branch)\[\e[0m\]\$ "
问题
虽然着色有效,但提示包含来自parse_git_branch 的一些转义序列。
leonidas:AYI jason\[\] (master) $
此外,命令历史记录 (up) 和递归搜索 (ctrl+r) 会产生额外的字符。
leonidas:AYI jason\[\] (master) $h)`re': git status
问题
- 如何使用适当的可见和不可见字符修复转义。
- 我是否应该使用
tput而不是这些颜色代码以获得更广泛的支持?
【问题讨论】:
-
(1) 切换到zsh,(2) 得到oh-my-zsh,(3) choose a theme,(4) 永不回头!
-
@Oli Charlesworth,感谢您的建议。但我想解决当前的问题。
-
@Kevin,您能否提供更多信息 - 在哪里,为什么?
-
当您设置
PS1="...$(parse_git_branch)..."时,它会在获取文件时精确评估一次。您需要PS1='...'每次都对其进行评估。 -
@Kevin,这不是我遇到的问题。每次都会对其进行评估。
标签: macos git bash command-prompt