纸上得来终觉浅,绝知此事要躬行。
在 MacOS 系统下,使用 oh-my-zsh 基本上可以补全绝大多数的常用命令,但是比如我们自己额外安装的命令是不会自动提示命令参数以及补全信息的,这就导致比较尴尬了。
今天我这里说的,主要是如何补全 Docker 以及其附属的命令组合。因为 Zsh 中并没有对应的补全提示信息,导致使用非常的蹩脚,而且 oh-my-zsh 的扩展中还没有带对应 Docker 命令的补全插件,惜败。
- 配置 ZSH 补全扩展
# 如果你使用oh-my-zsh需要clone仓库到oh-my-zsh仓库 $ git clone https://github.com/zsh-users/zsh-completions ~/.oh-my-zsh/custom/plugins/zsh-completions # 并且在.zshrc中开启自动完成插件 $ vim ~/.zshrc plugins=(… zsh-completions) # 然后重载zsh配置 $ autoload -U compinit && compinit
- 补全 Docker 相关命令
# 创建对应的目录 $ mkdir -p ~/.zsh/completion # 从docker安装目录中获取补全插件 $ ll /Applications/Docker.app/Contents/Resources/etc [email protected] 1 Escape admin 13K 8 27 19:44 docker-compose.bash-completion [email protected] 1 Escape admin 19K 8 27 19:44 docker-compose.zsh-completion [email protected] 1 Escape admin 12K 8 27 19:44 docker-machine.bash-completion [email protected] 1 Escape admin 13K 8 27 19:44 docker-machine.zsh-completion [email protected] 1 Escape admin 105K 8 27 19:44 docker.bash-completion [email protected] 1 Escape admin 49K 8 27 19:44 docker.fish-completion [email protected] 1 Escape admin 123K 8 27 19:44 docker.zsh-completion # 配置到zsh配置目录中 $ cp /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion ~/.zsh/completion/_docker $ cp /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion ~/.zsh/completion/_docker-compose $ cp /Applications/Docker.app/Contents/Resources/etc/docker-machine.zsh-completion ~/.zsh/completion/_docker-machine # 重载zsh配置 $ docker image image -- Manage images images -- List images import -- Import the contents from a tarball to create a filesystem image
当然,为了方便起见,还是讲对应的命令放到 ~/.zshrc 脚本中。之后,再启动终端的时候,就会自动加载 ~/.zsh 目录下的 Docker 命令补全扩展了。
$ vim ~/.zshrc autoload -Uz compinit && compinit -i ......