Zsh提示问题

时间:2014-05-19 14:51:22

标签: zsh oh-my-zsh

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

enter image description here

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

enter image description here

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

PROMPT='> '

但错误仍然存​​在。

有关可能遗漏的内容的任何线索?

您可以在此处找到我的主题:http://pastebin.com/cSJwGWKZ

请注意,我使用的是Oh My Zsh。

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

1 个答案:

答案 0 :(得分:5)

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

根据您所希望的RPROMPT,您基本上有两种选择:

  • 与输入光标位于同一行(λ之后):
    只需从%{$(echotc DO 1)%}
  • 中删除RPROMPT即可

RPROMPT='$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%'
  • 输入上方的一行(或任何其他行数):
    %{$(echotc UP 1)%}的开头添加RPROMPT,这会将光标向上移动一行,打印正确的提示并向后移动一行:

RPROMPT='%{$(echotc UP 1)%}$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%{$(echotc DO 1)%}'`

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