3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

zshの自動補完の話

Last updated at Posted at 2023-10-25

たぶん多くの人にとっては常識なんだろうけど、自分は迂闊にも知らずに来たので、そうした人が一人でも減るとよいなと思ってメモ。

zsh-completions

macのデフォルトであるzshで、サブコマンドの自動補完(候補表示)を行ってくれるもの。
いちいち--helpみたいなことをしなくて済むのでだいぶ作業が効率化される。
個人的には、近視の人がメガネに出会ったぐらいのインパクトがある気がする。

OSコマンドもさることながら、kubectlやeksctlなどにも適用できることが大きい。
例えば、kubectl (半角スペースあり)まで入力してTabを押下すると(あるいはkubectlまで入力してTabを2回押下でもOK)、実行可能なコマンド一覧を表示してくれる。表示候補が多すぎる場合は、kubectl eまで入力してTabを押下することで、eで始まるサブコマンドのみを表示させることができる。

インストール方法

Homebrewでいける。

brew install zsh-completions

インストール後に実行すべきコマンドや.zshrcへの追記事項については、以下のブログに詳しいので参照されない。

kubectlへの適用方法

以下を実行。

kubectl completion zsh > "${fpath[1]}/_kubectl"

eksctlへの適用方法

以下を実行。

mkdir -p ~/.zsh/completion/ ; eksctl completion zsh > ~/.zsh/completion/_eksctl

.zshrcに以下を追記。

fpath=($fpath ~/.zsh/completion)

最後に設定を再読込。

. ~/.zshrc

aws_completer

AWS CLIにも同様の機能がある。

インストール方法

AWS CLIと一緒にインストールされている。
ただし、パスがインストール方法によって違っていて、Homebrewでインストール(brew install awscli)した自分の場合は以下にあった。

> which aws_completer
/opt/homebrew/bin/aws_completer

上記の確認後、.zshrcに以下を追加(パスは自身の環境に併せて変更)。

export PATH=/opt/homebrew/bin/:$PATH
autoload bashcompinit && bashcompinit
autoload -Uz compinit && compinit
complete -C '/opt/homebrew/bin/aws_completer' aws

最後に設定を再読込。

. ~/.zshrc

こんな感じになる。
スクリーンショット 2023-10-25 14.55.19.png

まとめ

ターミナル生活が楽になる小ネタでした。
もっと早く知っておくべきだった・・・。

おまけ

zsh-autosuggestionsというのもある(こちらは以前から使っていた)。
過去に入力したコマンド履歴から自動補完してくれるもので、長いコマンドの再実行や、typo回避などに有益なのでこちらもお勧めしたい。

また、少し毛色は違うがpower10kも是非。zshにテーマを追加してくれるもので、特にgit使って作業する際、ブランチとの差分を視覚的に表示してくれるなど大変便利。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?