skip to content
私的歌詞倉庫

fish環境でdockerとkubernetesのコマンド補完を有効にする

/ 4 min read

Updated:
Table of Contents

はじめに

GMOペパボEC Advent Calendar 2023 の23日目です。22日目はひでさんでした。

https://adventar.org/calendars/8672/embed

最近zshからfishに出戻りしました。fishでは普通のshell scriptが使えないのが難点ですが、開発のしやすさは段違いなので出戻ってきました(特に補完周り)。

zshでは動いていたdockerとkubernetesの補完ですが、fishでは動かなくなり色々調べて、ようやく動くようになったので紹介します。

公式サイトにも解説はあるのですがbashとzshのみでfishはありませんでした。

コマンドライン補完 — Docker-docs-ja 24.0 ドキュメント

kubectlのインストールおよびセットアップ

設定方法

先に動いた方法を載せておきます。

動いた設定

kubernetesの場合はfisherを使うと簡単に設定できます。

Terminal window
fisher install evanlucas/fish-kubectl-completions

dockerの場合はcurlで持ってきます。

Terminal window
curl https://raw.githubusercontent.com/docker/cli/master/contrib/completion/fish/docker.fish -o ~/.config/fish/completions/docker.fish

解説

kubernetesの場合は特に解説することもないので、スキップします。fisherを使ってない場合はリポジトリにあるREADME通りに手動で設定すれば動きそうです。

https://github.com/evanlucas/fish-kubectl-completions

dockerの場合は最初検索したときに出てきたQiitaのサイトを参考に設定していました。しかし、curlで参照しているリポジトリがArchiveされており古そうでした。そのため、新しいリポジトリを指定するようにします。

fish でdockerコマンドを補完(completion)する - Qiita

参考にしたサイトのcurlが参照しているリポジトリはこちらでした。

https://github.com/docker/docker-ce

READMEを読むと移行先はdocker/cli だったのでそちらを参照しました。

curlが参照しているfishのscriptはこちらです。completionディレクトリを見る感じfish以外にもbash、zsh、powershellも対応していようです。

ついでに現在のkubernetesのnamespaceとcontextを表示するプラグインも入れています。

https://github.com/Ladicle/fish-kubectl-prompt

Terminal window
fisher install Ladicle/fish-kubectl-prompt

終わりに

補完が効くようになって便利です。特に、起動中のコンテナ名をタブキーで補完してくれるのが便利です。

fishでは便利な補完をしてくれますが、~/.config/fish/completions に設定を追加することで補完を実現しているんだな〜と勉強になりました。

明日のアドベントカレンダーはあずみさんです。

参考文献