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 ドキュメント
設定方法
先に動いた方法を載せておきます。
動いた設定
kubernetesの場合はfisherを使うと簡単に設定できます。
fisher install evanlucas/fish-kubectl-completionsdockerの場合はcurlで持ってきます。
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
fisher install Ladicle/fish-kubectl-prompt終わりに
補完が効くようになって便利です。特に、起動中のコンテナ名をタブキーで補完してくれるのが便利です。
fishでは便利な補完をしてくれますが、~/.config/fish/completions に設定を追加することで補完を実現しているんだな〜と勉強になりました。
明日のアドベントカレンダーはあずみさんです。