-->

ZSH RPROMPT怪异的间距?(ZSH RPROMPT weird spacing?)

2019-08-04 18:47发布

这里是我的ZSH提示主题

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)'

看起来像

见右边的间距? 另外,箭头在错误的地方开始?

我怎样才能解决这个问题?

Answer 1:

我相信, $fg[color]包含有类似\e[32m ? 如果是这样,它必须包含在%{…%} ,表明该序列没有宽度。 但是,如果你忘记了整个事情,并使用好得多%F{color}为前景, %K{color}背景和%f / %k取消它们代替$reset_color 。 你必须做

setopt promptsubst
setopt promptpercent

为了使这项工作(你可能已经完成的这一点)。

这差距是颜色的宽度,他们为什么你错了光标位置的原因。 这里的问题是,zsh中不能使用的问题查询终端“嘿,我输出的一些文字,什么是它的宽度是多少?”,而不必计算自身宽度。



文章来源: ZSH RPROMPT weird spacing?