Macos ZSH RPROMPT奇怪的间距?
这是我的ZSH提示主题Macos ZSH RPROMPT奇怪的间距?,macos,command-prompt,zsh,iterm,zshrc,Macos,Command Prompt,Zsh,Iterm,Zshrc,这是我的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
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\u prompt\u 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)'
看起来像
看到右边的间距了吗?箭头也从错误的地方开始
如何修复此问题?我相信
$fg[color]
包含类似\e[32m
?如果是这样,则必须将其括在%{…%}
中,以指示此序列没有宽度。但如果您忘记整个内容,并使用%F{color}
作为前景,%K{color}
用于背景和%f
/%k
以取消它们而不是$reset\u color
。必须执行以下操作
setopt promptsubst
setopt promptpercent
为了让它工作(你可能已经有了这个)
这个间隙是颜色的宽度,它们是光标位置错误的原因。这里的问题是zsh不能用“嘿,我输出了一些文本,它的宽度是多少?”这个问题来查询终端相反,我必须自己计算宽度。现在我的文件看起来像这样,看起来像这样,我尝试添加setopt promptsubst setopt promptspercent,但没有添加work@Gabri它可以工作,否则您将看不到这一点(第一个允许扩展
$()
,第二个允许%{
工作)。我看不出您在此处显示的内容有任何问题。制表符完成情况不正常。我有一个额外的空间&如果您单击backspace删除您所写的内容,最后一封信仍将可见。请检查此@Gabri我现在看到了。%{…%}
正如我所说的,文本没有宽度。在*\u DIRTY
变量中违反了这条规则。谢谢,这也解决了我的问题。我不得不使用${…$},因为我想要256种颜色,而不是有名称别名的16种颜色。嘿,你能分享一下颜色方案吗?我知道这条线程很旧,但也许你仍然可以得到它=/