使用 zsh + oh-my-zsh + iTerm2 + High Sierra 的不同多行提示行为

Different multiline prompt behavior using zsh + oh-my-zsh + iTerm2 + High Sierra

在最新的 macOS High Sierra、iTerm2、zsh 和 oh-my-zsh 上,我注意到使用多行提示时制表符补全不再正确刷新。我已经在两台不同的机器上验证了这个问题,我想知道:

  1. 如果您也可以验证这对您来说是个问题
  2. 如何开始确定导致此问题的系统
  3. 如果您知道解决方法

示例提示:

PROMPT="$(virtualenv_info) %n at %~ on %M $(vcs_info)
%(!.#.$) "

产生:

(myvirtualenv) me at ~/source/some-repo on localhost [master]
$

问题:

当尝试为 lscd 等命令补全时,按 TAB 键查看子目录会导致后续打印覆盖包含提示的行:

(myvirtualenv) me at ~/source/some-repo on localhost [master]
$ ls some-f...

点击 TAB

(myvirtualenv) me at ~/source/some-repo on localhost [master]
$ ls some-folder/

再次按 TAB

  some-folder/
folder-1/    folder-2/    folder-3/

以上输出覆盖了包含提示的行。我试过了 setting locale info and different kinds of newlines。这个多行提示在我拥有的 CentOS AWS 盒子上的旧版本 zsh 运行 上仍然可以正常工作,明天我可以确认它是否仍在 < 10.13 macOS 机器上工作。

我能够通过推导 COMPLETION_WAITING_DOTS 设置来缩小范围,我现在发现 this oh-my-zsh issue 证实了这一点。这段代码在 High Sierra 中的行为似乎有所不同,因此我将研究它以寻求解决方法或可能的修复方法。现在我的解决方法是删除我的 COMPLETION_WAITING_DOTS="true" 设置。