在最新的 macOS High Sierra、iTerm2、zsh 和 oh-my-zsh 上,我注意到使用多行提示时的制表符补全不再正确刷新。我已经在两台不同的机器上验证了这个问题,我想知道:
- 如果您还可以验证这对您来说是个问题
- 如何开始确定导致此问题的系统
- 如果您知道解决方法
示例提示:
PROMPT="$(virtualenv_info) %n at %~ on %M $(vcs_info)
%(!.#.$) "
产生:
(myvirtualenv) me at ~/source/some-repo on localhost [master]
$
问题:
当尝试完成类似ls
or的命令时cd
,点击 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/
上面的输出覆盖了包含提示的行。我试过设置语言环境信息和不同种类的换行符。这个多行提示在我拥有的 CentOS AWS 机器上运行的旧版本 zsh 上仍然可以正常工作,明天我可以确认它是否仍在 < 10.13 macOS 机器上工作。