我的 macOS 上安装了 oh-my-zsh 并启用了 docker zsh 插件的用户 A 在我进行 Tab 补全时看到了这一点:
$ docker i<tab>
image -- Manage images
images -- List images
import -- Import the contents from a tarball to create a filesystem image
info -- Display system-wide information
init -- Creates Docker-related starter files for your project (Docker Inc., v0.1.0-beta.4)
inspect -- Return low-level information on Docker objects
我也在同一台机器上使用 oh-my-zsh 设置用户 B,但是当我这样做
docker i<tab>
时,它会导致 docker inspect
,而不是上面的很好的完成。其他选项均未显示。与 docker p<tab>
相同,仅显示 ps
和 prune
的选项,但没有其他以字母 p
开头的子命令,如 pause
、pull
、port
等。我也不知道看不到像用户 A 那样的子命令描述。用户 B 只能看到没有描述的命令。
两台机器都运行相同版本的 zsh。
什么可以解释为什么用户 B 与用户 A 的 docker 补全工作方式如此不同?
好吧,看起来用户 A 拥有旧版本的 oh-my-zsh docker 插件,而用户 B 拥有较新版本。我认为新版本可能有错误。
你是对的,这是因为 Docker 插件更新了。长话短说,将以下行添加到您的
.zshrc
:
zstyle ':omz:plugins:docker' legacy-completion yes
(如插件的 README 中所述)
您可以在此处找到详细信息:完成功能在 Docker 版本 24.0.2 中无法正常工作。等待 Docker 团队的修复。之后,您可以从配置中删除此设置。