在OSX iTerm2 oh-my-zsh上实现Docker的shell自动补全

18
我想在这个堆栈(OSX iTerm2 oh-my-zsh)上获取Docker shell完成。我遵循了这个指南 -> https://docs.docker.com/compose/completion/ 首先,我执行了这个命令。
$ mkdir -p ~/.zsh/completion
$ curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/zsh/_docker-compose > ~/.zsh/completion/_docker-compose

接着我在~/.zshrc文件的最后添加了这两行代码

fpath=(~/.zsh/completion $fpath)
autoload -Uz compinit && compinit -i

然后在终端中运行以下命令:

source ~/.zshrc
exec $SHELL -l

但是当我按下tab键时,它会建议路径中的文件和文件夹

4个回答

43

你为docker-compose设置了自动补全,但没有为docker设置。如果您也想添加docker的自动补全,请运行以下命令并重新加载您的shell。

curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/zsh/_docker > ~/.zsh/completion/_docker 

其他解决方案(更新):

docker插件添加到.zshrc的插件列表中:

  1. 打开~/.zshrc
  2. 像这样将docker添加到插件列表中:plugins=(docker ...)

1
我按照链接 https://docs.docker.com/compose/completion/#zsh 中的指南进行操作,确保 plugins=(docker,git ...) 并重新加载 shell,成功让我的工作正常运行,并且可以使用选项卡自动完成功能。 - james-see
2
它可以工作,但如果您尝试运行docker exec -it,则不会列出容器。 - Barbaros Alp
8
我尝试了各种方法,但我的iterm2上的Docker自动补全无法工作。这个答案对我有用,希望能帮到别人:https://dev59.com/oloU5IYBdhLWcg3we20R#45406609 - Lucas Bustamante
1
@LucasBustamante,这确实帮了我!谢谢!我注意到compinit应该放在配置文件的末尾。 - zx1986
在MacOS Mojave中,将docker添加到插件列表中只有在从主目录中删除.zcompdump *'文件后才能正常工作(如此答案所建议的https://dev59.com/oloU5IYBdhLWcg3we20R#55341741)。 - Timo Saloranta
在我的情况下,我只是按照 Docker 文档上的步骤,在我的 /opt/homebrew/autocompletions/_docker 目录下添加了插件 Docker,而没有将其链接到 usr/local/share/zsh 目录中。谢谢。 - Yogi Arif Widodo

12

请确保运行以下命令来升级oh-my-zsh到最新版本:upgrade_oh_my_zsh

同时,在尝试其他解决办法之后,运行rm ~/.zcompdump*也是个好主意。

这对我很有用。


1
谢谢,这个解决了我的问题! - Kevin Patrick

0

0
在你的iTerm2上运行vim ~/.zshrc
找到包含plugins=()的那一行,通常会有git,例如plugins=(git)
通过在该行按下I(插入模式为i)进行更改
plugins=(docker git)更改为添加docker扩展,并按ESC退出插入模式
保存,输入:w保存并退出,输入:x
重新启动你的iTerm2,然后docker完成应该可以工作了

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接