2012-12-27 66 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