2013-01-08 48 views
9

我有这样的代码上色我的终端:歇线修复

export PS1="\e[1;30m\][\e[\e[1;30m\]\e[1;33m\] \[email protected]\H \[\e[1;32m\]\w\[\e[0m\] \e[1;30m\]]\n[\[ \e[1;31m\]\T\[\e[0m\]\e[1;30m\] ] > \e[37m\]" 

但我有一个问题,当文本应该在新的生产线就覆盖了第一线,有人可以帮我解决这个 ?

例子:http://cl.ly/image/3P2p3N2b0T14

谢谢

回答

12

为了bash中找出你的提示画面占用多少空间了(因此实际的命令行开始的地方),则必须在其非在\[...\]中打印部分提示。大多数情况下,这意味着转义序列\e[1;30m需要写为\[\e[1;30m\]。在你的提示中你有一些\[\],但他们在错误的地方,这使得bash非常困惑。查找所有提示的打印和非打印部分并不复杂,但我认为这是正确的:

export PS1='\[\e[1;30m[\e[\e[1;30m\e[1;33m\] \[email protected]\H \[\e[1;32m\]\w\[\e[0m\] \[\e[1;30m\]]\n[ \[\e[1;31m\]\T\[\e[0m\e[1;30m\] ] > \[\e[37m\]' 
+0

我有同样的问题,谢谢你指出你需要有非打印部分覆盖在'\ ['...'\]' – pbojinov

+0

辉煌 - 如果没有在PS1中使用'\ ['和'\]'围绕颜色转义序列,当您指定时,光标位置不同步使用向上箭头在shell历史记录中选择以前的命令。 –