Zsh提示问题

jvi*_*tti 1 zsh oh-my-zsh

我的Zsh提示光标有时(实际上大部分时间)下面的一行应该是(附加屏幕截图):

在此输入图像描述

如果我多次输入,则提示似乎得到修复:

在此输入图像描述

我的第一个想法是在我的自定义提示符中出错,所以我用一个只包含一个数字的简单提示替换了提示:

PROMPT='> '
Run Code Online (Sandbox Code Playgroud)

但错误仍然存​​在.

什么可以丢失的线索?

你可以在这里找到我的主题:http://pastebin.com/cSJwGWKZ.

请注意,我正在使用Oh My Zsh.

编辑:当我到达终端的底部时(通过点击进入),提示似乎得到修复.

Ada*_*hon 6

罪魁祸首在于%{$(echotc DO 1)%}RPROMPT,它在打印时将光标向下移动一行RPROMPT.当到达终端的底部时,没有额外的线路可以到达,因此光标就会保持原样.

根据您的需要,您RPROMPT基本上有两种选择:

  • 与输入光标位于同一行(之后?):
    只需%{$(echotc DO 1)%}从您的RPROMPT:

RPROMPT='$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%'
Run Code Online (Sandbox Code Playgroud)
  • 输入上方有一行(或任何其他行数):在您的开头
    添加,这会将光标向上移动一行,打印右侧提示并向下移动一行:%{$(echotc UP 1)%}RPROMPT

RPROMPT='%{$(echotc UP 1)%}$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%{$(echotc DO 1)%}'`
Run Code Online (Sandbox Code Playgroud)

注意:第二种方法可能会导致RPROMPT覆盖部分,PROMPT如果两者都变长和/或终端窗口缩小.如果RPROMPT与输入保持在同一行,则一旦输入到达它就会被隐藏(如果删除一些输入,它将重新获得).