docker コマンドの zsh での補完の設定で option-stacking というのを知って調べてみました。

確認環境

  • macOS 10.14.4
  • zsh 5.3 (x86_64-apple-darwin18.0)
  • Docker version 18.09.2, build 6247962

docker のインストール

brew cask install docker で入れたものを使っています。

補完を有効にする

以下のようにシンボリックリンクを作成しています。

ln -sf /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
ln -sf /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose
ln -sf /Applications/Docker.app/Contents/Resources/etc/docker-machine.zsh-completion /usr/local/share/zsh/site-functions/_docker-machine

入っていない環境では https://github.com/docker/cli/blob/master/contrib/completion/zsh/_docker あたりからダウンロードしてくると良いようです。

設定変更

zshでdockerコマンドを補完するで知ったのですが、 docker の補完の独自設定として option-stacking という設定があり_arguments-s オプションをつけるかどうかを選べるようです。

zstyle 一般に option-stacking という設定があるわけではなく _docker 独自の設定名のようです。

zstyle ':completion:*:*:docker:*' option-stacking yes
zstyle ':completion:*:*:docker-*:*' option-stacking yes

を設定して有効にすると、 -s オプションがつくようになり、 たとえば docker run -i[TAB] で他の1文字オプションの補完ができるようになります。

デフォルトだとスペースが入って次の引数を入力する状態になります。

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published