纸上得来终觉浅,绝知此事要躬行。
在
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
-rw-r--r--@ 1 Escape admin 13K 8 27 19:44 docker-compose.bash-completion
-rw-r--r--@ 1 Escape admin 19K 8 27 19:44 docker-compose.zsh-completion
-rw-r--r--@ 1 Escape admin 12K 8 27 19:44 docker-machine.bash-completion
-rw-r--r--@ 1 Escape admin 13K 8 27 19:44 docker-machine.zsh-completion
-rwxr-xr-x@ 1 Escape admin 105K 8 27 19:44 docker.bash-completion
-rwxr-xr-x@ 1 Escape admin 49K 8 27 19:44 docker.fish-completion
-rwxr-xr-x@ 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
......