Zsh提示符的问题

Zsh提示符的问题,zsh,oh-my-zsh,Zsh,Oh My Zsh,我的Zsh提示符光标有时(实际上大部分时间)在它应该在下面的一行(附加屏幕截图): 如果我多次按enter键,提示似乎得到了修复: 我的第一个想法是,这是自定义提示中的一个错误,因此我用一个只包含一个数字的简单提示替换为提示: PROMPT='> ' 但错误依然存在 关于可能丢失的东西有什么线索吗 你可以在这里找到我的主题: 请注意,我使用的是Oh My Zsh 编辑:当我到达终端底部时(通过点击回车键),提示似乎得到修复。罪魁祸首是%{$(echotc DO 1)%}在您的RPRO

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

如果我多次按enter键,提示似乎得到了修复:

我的第一个想法是,这是自定义提示中的一个错误,因此我用一个只包含一个数字的简单提示替换为提示:

PROMPT='> '
但错误依然存在

关于可能丢失的东西有什么线索吗

你可以在这里找到我的主题:

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

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

罪魁祸首是
%{$(echotc DO 1)%}
在您的
RPROMPT
中,它在打印
RPROMPT
时将光标向下移动一行。当到达终端的底部时,没有额外的行可以向下移动,因此光标只会停留在原来的位置

根据您的
RPROMPT
位置,基本上有两种选择:

  • 与输入光标在同一行上(在
    λ
    之后):
    只需从您的
    RPROMPT
    中删除
    %{$(echotc DO 1)%}

  • 在您的输入上方有一行(或任何其他数量的行):
    RPROMPT
    的开头添加
    %{$(echotc UP 1)%}
    ,这会将光标上移一行,打印右侧提示,然后再下移一行:


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

罪魁祸首是
%{$(echotc DO 1)%}
RPROMPT
中,当打印
RPROMPT
时,它会将光标向下移动一行。当到达终端的底部时,没有额外的行可以向下移动,因此光标只会停留在原来的位置

根据您的
RPROMPT
位置,基本上有两种选择:

  • 与输入光标在同一行上(在
    λ
    之后):
    只需从您的
    RPROMPT
    中删除
    %{$(echotc DO 1)%}

  • 在您的输入上方有一行(或任何其他数量的行):
    RPROMPT
    的开头添加
    %{$(echotc UP 1)%}
    ,这会将光标上移一行,打印右侧提示,然后再下移一行:



注意:第二种方法可能导致
RPROMPT
覆盖
提示符的部分,如果两者都变长和/或终端窗口变窄。如果
RPROMPT
与输入保持在同一行,则一旦输入到达该行,它将被隐藏(如果删除部分输入,它将重新应用)。

非常感谢您的精彩解释!非常感谢您的精彩解释!
RPROMPT='$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%'
RPROMPT='%{$(echotc UP 1)%}$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%{$(echotc DO 1)%}'`