2010-08-25 49 views
5

我在〜/ .localsh文件中添加了以下內容,以便在使用git時自定義我的bash提示符。bash中的動態元素PS1

基本上我想得到當前分支顯示在我的終端。 gitk工具顯示帶有綠色背景和黑色前景的分支,所以這就是我想要做的。

我的工作原理是什麼,但是當我按下鍵盤上的向上箭頭以回滾之前的命令時,它會被覆蓋。

這個東西已經發生在你之前,我沒有用[\ e [0m]結束顏色序列。 因爲調用getgitbranch函數,現在發生在我身上。我認爲這與終端不知道提示符有多長時間有關。

因此,繼承人的問題... 如何正確使用我的bash提示符中的動態元素,而不是讓我在使用向上箭頭時使用它?

function getgitbranch() 
{ 
git branch | grep "^\*" | cut -c3- 
} 

function blabla() 
{ 
PS1="" 
PS1="$PS1\[\e[0;30m\]\[\e[42m\]\[\$(getgitbranch)\]\[\e[0;49m\]\[\e[0m\] " 
PS1="$PS1\[\e[1;35m\][\[\e[0m\]" 
PS1="$PS1\[\e[1;33m\]\w\[\e[0m\]" 
PS1="$PS1\[\e[1;35m\]]\[\e[0m\]" 
PS1="$PS1 \[\e[1;31m\]>\[\e[0m\] " 
export PS1 
} 
+2

如果你使用的是git bash completion(這非常棒),你可以在其中放入$(__ git_ps1),並且更強健地獲取分支名稱 - 如果你是中等基礎的等等 - 作爲反饋以及您的工作樹狀態(修改,分階段修改)的指標。 – Cascabel 2010-08-25 18:03:39

回答

5

$(getgitbranch)各地取出\[\]。該函數輸出的字符實際佔用屏幕上的空間,因此您希望Bash對它們進行解釋。使用\[\]表示不要計算出現的字符數。

+0

感謝一羣工作。 我有一個提示,使用隨機顏色,我打電話像... \\ [\ $(randomColor)\\] 在這種情況下,我不希望他們計數,在這種情況下,我這樣做。 – 2010-08-25 17:03:17