53

我已经使用 oh-my-zsh 一段时间了,最​​近由于某种原因,docker 插件停止了对我的工作。

我检查了我的 ~/.zshrc 文件并包含该插件

plugins=(git colored-man colorize github jira vagrant virtualenv pip python brew osx zsh-syntax-highlighting docker)

我检查了~/.oh-my-zsh/plugins/docker目录,里面有一个_docker文件。然而,当我键入docker并按 Tab 时,我没有得到以前得到的自动完成快捷方式。

我可以确认我的git插件工作正常但不是docker插件。尝试做exec zshsource ~/.zshrc重新启动我的终端,但没有运气。

我错过了什么吗?

4

8 回答 8

246

您可能想尝试删除.zcompdump-(...)用户主目录中可能拥有的任何文件 - 使用rm ~/.zcompdump*终端或某些文件浏览器上的东西 - 然后.zschrc使用命令重新加载文件source ~/.zshrc或重新启动终端 - 以最适合您的方式。看到这个

然后看看它是否有效。

于 2019-03-25T15:55:49.307 回答
63

似乎 oh-my-zsh 没有加载plugins/docker/_docker文件。您必须~/.zshrc以另一种方式添加它。将这些行添加到您的~/.zshrc文件中:

fpath+=($ZSH/plugins/docker)
autoload -U compinit && compinit
于 2017-07-31T02:16:34.617 回答
6

对我来说,我第一次需要从 Mac 上的 Spotlight 启动 Docker,以便 Docker for Desktop 获得所需的访问权限。然后docker version命令工作得很好。

于 2019-08-12T08:30:19.397 回答
3

就我而言:Windows 10 + WSL2 + Hyper

我遇到了这个错误,因为我在 Windows 上停止了 Docker ......再次启动它会使错误在 Hyper 中消失(因此也在 ZSH 中)。

无需.zshrc更改或添加其他命令。

于 2020-08-14T08:37:08.353 回答
2

如果您正在使用 oh-my-zsh 并且自动完成功能不起作用,请按照以下步骤操作:

  1. 制作以下三个链接:

    ln -s /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
    ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.zsh-completion /usr/local/share/zsh/site-functions/_docker-machine
    ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose
    
  2. 添加或在您的 shell 中运行autoload -Uz compinit; compinit.zshrc

    echo "autoload -Uz compinit; compinit" >> .zshrc
    
于 2019-03-31T21:28:47.740 回答
1

@youhans 的解决方案对我永久有效。您可能有权限问题,无法对“zshrc”进行必要的调整。我已将权限更改为“读写”,并将@youhans 响应中的代码片段添加到“zshrc”文件的末尾。现在完成系统总是有效的。

  • 在我每次打开新终端时都必须在命令行中输入以下代码片段之前。

    自动加载 -Uz compinit && compinit

于 2020-05-03T09:25:23.757 回答
0

就我而言,它是由于别名而发生的。我已经定义了alias docker=docker.exe. 删除它是否再次起作用。

系统与环境

  • 操作系统:Windows 10 家庭版,x64
  • 外壳:Zsh(在 Gitbash 上)
于 2021-04-09T22:50:05.070 回答
-35

我认为您可能在每个插件之间缺少 ,。

plugins=(git, colored-man, colorize, github, jira, vagrant, virtualenv, pip, python, brew, osx, zsh-syntax-highlighting, docker)

或者,您可以将每个插件放在单独的行上:

plugins=(
  git
  colored-man
  colorize 
  github
  jira
  vagrant
  virtualenv
  pip
  python
  brew
  osx
  zsh-syntax-highlighting 
  docker
)
于 2017-06-13T00:08:14.587 回答