2013-01-08 68 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歷史記錄中選擇以前的命令。 –