pkaramol Asked: 2017-04-26 01:50:15 +0800 CST2017-04-26 01:50:15 +0800 CST 2017-04-26 01:50:15 +0800 CST Shell 提示自定义和 cmd 行为 772 我希望我的提示显示: 当前(绝对)工作目录,以绿色和 在新行中,美元符号和空白处。 我正在使用这条线.profile export PS1='\e[0;32m$(pwd)\n\e[m$ ' 因此,当在 eg中时Desktop,我的提示如下所示: 但是,有时当按向上箭头重新运行以前的命令时,在提示符开始时会出现一个随机字符序列,除非我按 Enter,否则它似乎不会消失,例如 我从来没有下过cd cd Desktop命令。最奇怪的是,退格键甚至不会删除cd上面两个命令中的第一个! 有什么建议么? command-line 2 个回答 Voted Best Answer Zanna 2017-04-26T02:01:44+08:002017-04-26T02:01:44+08:00 您必须确保提示中的非打印字符在转义方括号中,否则 bash 无法正确计算提示的大小。我想我已经为你解决了: PS1='\[\e[0;32m\]$PWD\n\[\e[m\]$ ' pkaramol 2017-04-26T02:24:39+08:002017-04-26T02:24:39+08:00 首先非常感谢@Zanna 指出了解决此问题的正确方法。 为了获得更完整的答案,我扩展了解决方案,包括: a) 绿色的 cwd b) 在新行中,如果分支脏了,git 分支(如果有的话)呈黄色并带有红色星号 要完成 b,需要git感知提示 它像这样作为最后一行~/.bashrc export PS1='\[\e[0;32m\]$PWD\n\[\e[m\]\[\e[0;33m\]$git_branch\[\e[m\]\[$txtred\]$git_dirty\[$txtrst\]$ ' 如果您在 git 分支上,提示现在有望扩展到像这样
您必须确保提示中的非打印字符在转义方括号中,否则 bash 无法正确计算提示的大小。我想我已经为你解决了:
首先非常感谢@Zanna 指出了解决此问题的正确方法。
为了获得更完整的答案,我扩展了解决方案,包括:
a) 绿色的 cwd
b) 在新行中,如果分支脏了,git 分支(如果有的话)呈黄色并带有红色星号
要完成 b,需要git感知提示
它像这样作为最后一行
~/.bashrc
如果您在 git 分支上,提示现在有望扩展到像这样