Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos ZSH RPROMPT奇怪的间距?_Macos_Command Prompt_Zsh_Iterm_Zshrc - Fatal编程技术网

Macos ZSH RPROMPT奇怪的间距?

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

这是我的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\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种颜色。嘿,你能分享一下颜色方案吗?我知道这条线程很旧,但也许你仍然可以得到它=/