我在 .bashprofile 中使用以下行创建了一个自定义 Mac 终端提示:
export PS1='\e[0;36m\][\u] \w:\e[0;31m\]$(__git_ps1 " (%s)") \e[00m\n\e[1;33m\]\342\230\200 >\e[0m\] '
这里发生了很多事情,但我已将违规者隔离为 '\e'... 部分,它控制文本出现时的颜色。
虽然生成的文本提示本身非常准确且功能正常,但在使用箭头键循环浏览过去的命令时出现了一个奇怪的错误。似乎当循环并达到某个任意字符长度的命令(例如 18)时,前几个字符在继续循环时不再被删除,导致各种输入的外观不准确(尽管功能正确)。这有点难以解释,所以这里是一个带有提示 ('>') 和击键的示例,由星号中的“向上”或“向下”表示:
> vim sample.txt ** up **
> vim test.txt ** up ** (no problems so far)
> cd /Documents/Test_Folder/sample/foo.txt **down**
> cd /Documvim text.txt (the issue is visible)
换句话说,前一个命令的一部分没有完全删除,导致出现令人困惑的字符串,尽管执行该命令将正常运行(而不是文本出现)。请注意,最后发出的“down”也可以替换为“up”,问题仍然存在。
谁能解释为什么会发生这种情况,或者是否有替代“\ e”来更改 Mac 终端颜色以避免此问题?