在 Zsh 中点击 Tab 会超过行

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

我刚刚切换到 Zsh,但我遇到了一个奇怪的问题:每次我按 Tab 键时,提示都会上升一行,从而吃掉上面的内容。

为了更清楚地说明问题,我创建了一个GIF:

在此处输入图片说明

我正在使用自定义主题和 Oh My Zsh。您可以在此处找到主题:http : //pastebin.com/12dZtZf3

编辑:问题似乎存在于我的主题中,因为使用其他主题可以解决问题。

编辑:罪魁祸首似乎在打印破折号行和提示上方的日期的函数中:

_professional_prompt_header() {
  echo -n "$bg[grey]"

  for i in {0..$(( $(tput cols) / 2 - 6 ))}; do
    echo -n "--"
  done

  # Uncommenting this line fixes the problem.
  # Tried echo without -n and print, but no success.
  echo -n " %*$reset_color"      
}
Run Code Online (Sandbox Code Playgroud)

use*_*019 4

在 zsh 5.3 版本中,这也成为多行提示的问题。截至2017年1月13日,补丁尚未发布。可以在这个 prezto 问题中找到讨论和解释。

有关有问题的 zsh 问题本身的更多讨论可以在这里找到

希望 zsh 项目能够解决这个问题。如果没有,github 存储库中提到的一些解决方法是使PROMPT变量只有一行,输出precmd函数中的任何其他行。然而,这看起来很痛苦,所以在它被修复(或决定成为一个“功能”)之前,最简单的修复听起来像是回滚到 zsh 5.2。