当我尝试移动到上一个命令时,它覆盖了 iterm 中的当前目录 root

when I try to move to previous command, it covers current dir root in iterm

嗨,我是 OSX 上命令行界面的新手。在开始编码之前,我更改了 bash 我喜欢的颜色。

#github branch show
parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ ()/'
}

#export PS1="\W $"
export PS1="\[\e[0;36m\W\e[m\e[32m$(parse_git_branch)\[3[00m\] $ "

#hightlight path
alias ls="ls -G"

它大部分工作正常,但是当我使用向上和向下键移动到上一个命令时,上一个命令像这样覆盖当前目录。

Desktop $
Descd ~

是否有任何文档可以让我了解有关 PS1 设置和解决此问题的更多信息?

提前致谢。

您只想将不使光标前进的字符包含在 \[...\] 内。

将顶部的提示与底部的正确提示进行比较。

export PS1="\[\e[0;36m\W\e[m\e[32m$(parse_git_branch)\[3[00m\] $ "
export PS1="\[\e[0;36m\]\W\[\e[32m\]$(parse_git_branch)\[3[00m\] $ "

(我还冒昧地从您的提示中间删除了明显不必要的 \e[m。)