2012-12-27 92 views
6

這裏是我的ZSH提示主題ZSH RPROMPT奇怪的空間?

function git_prompt_info() { 
    ref=$(git symbolic-ref HEAD 2> /dev/null) || return 
    echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX" 
} 


PROMPT='$fg[yellow]%}⚡︎ $fg[cyan]%~ $(git_prompt_info) 
%{$reset_color%}→ ' 

ZSH_THEME_GIT_PROMPT_PREFIX="[git:" 
ZSH_THEME_GIT_PROMPT_SUFFIX="]$reset_color" 
ZSH_THEME_GIT_PROMPT_DIRTY="$fg[red]+" 
ZSH_THEME_GIT_PROMPT_CLEAN="$fg[green]" 

RPROMPT='%T' 

它看起來像這樣

當我移動$(git_prompt_info)到RPROMPT

function git_prompt_info() { 
    ref=$(git symbolic-ref HEAD 2> /dev/null) || return 
    echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX" 
} 


PROMPT='%T $fg[yellow]%}⚡︎ $fg[cyan]%~ 
%{$reset_color%}→ ' 

ZSH_THEME_GIT_PROMPT_PREFIX="[git:" 
ZSH_THEME_GIT_PROMPT_SUFFIX="]$reset_color" 
ZSH_THEME_GIT_PROMPT_DIRTY="$fg[red]+" 
ZSH_THEME_GIT_PROMPT_CLEAN="$fg[green]" 

RPROMPT='$(git_prompt_info)' 

它看起來像這樣enter image description here

看到右邊的間距?另外箭頭從錯誤的地方開始?

我該如何解決這個問題?

感謝

+0

嘿,請你分享的配色方案?我知道這個線程是舊的,但也許你還行嗎=/ – roboslone

回答

9

我相信$fg[color]包含有類似\e[32m?如果是這樣,它必須被包含在%{…%}中以指示該序列沒有寬度。但是,如果你忘記了整個事情,並使用%F{color}的前景,%K{color}背景和%f/%k取消它們代替$reset_color好得多。你必須做

setopt promptsubst 
setopt promptpercent 

爲了這個工作(你可能已經有這個)。

這個差距是顏色的寬度,他們爲什麼你錯了光標位置的原因。這裏的問題是,zsh中不能使用的問題查詢終端「嘿,我輸出的一些文字,什麼是它的寬度是多少?」,而不必計算自身寬度。

+0

現在我的文件看起來像這樣http://pastebin.com/icU1e62D 它看起來像這樣http://f.cl.ly/items/ 3i3l2V3k3d1d1I321I1s /屏幕%20Shot%202012-12-28%20AT%201.26.36%,20 AM.png 我嘗試添加 SETOPT promptsubst SETOPT promptpercent 但它沒有工作 – ahmedelgabri

+0

@Gabri它的工作或你贏了」不會看到這個(首先允許擴展'$()',第二個make'%{'work)。我在這裏顯示的內容中沒有看到任何問題。 – ZyX

+0

標籤的完成不能正常工作,我有一個額外的空間&如果你點擊退格鍵刪除你寫的最後一封信仍然會檢查看得到這http://cl.ly/3v1U2k1b2f3h – ahmedelgabri