Precena Tech Book
コーポレートサイト採用サイト
  • はじめに
  • ソフトウェア開発
    • 開発環境構築
      • Homebrew
        • Homebrew用語の意味
      • ngrok
        • ngrokの導入
        • ngrokのアップグレード(v2 to v3)
      • Slack
        • Slackの/remind コマンドの形式
        • 対面での相談を気軽にするためのSlack設定
      • AWS CLI
      • Ruby
      • Scala
      • Prettier
      • zsh
        • zsh-completion
      • Mac
        • M1 Macでの開発環境構築(rosetta 無し)
    • バックエンド
      • OpenAPI
        • OpenAPI 定義ファイル分割のすゝめ
      • Ruby on Rails
        • ActiveRecordのfind_or_initialize_byメソッドにブロックを渡したときの挙動
        • Railsのアプリケーションサーバーのプロセス数とスレッド数の設定方法
        • Railsを6.1系から7.0系へアップグレードした時に調査したこと
        • schema.rbで差分が発生する事例とその復旧について
        • tmux + overmind を利用して、複数システムを1コマンドで起動できるよう設定する
        • Rails Migrationチートシート
        • GithubのプライベートリポジトリをGemfileで参照する方法
        • ActiveSupportのto_jsonメソッドの注意点
        • 危険なJSON出力を禁止するRuboCopカスタムルールの作成方法
      • Scala
        • Validated を直列に処理したい
      • DB
        • PostgreSQLにおける、削除行に対するロック獲得時の挙動
    • フロントエンド
      • React
        • Storybookを利用したビジュアルリグレッションテスト
  • インフラ開発
    • AWS
      • IAM
        • スイッチロールの設定手順
        • AWS CLIでのスイッチロールの設定手順
        • AWS Vaultを使ったスイッチロール設定手順
        • Github ActionsでIAMロールを利用してAWSリソースを操作する
      • ECS
      • SES
        • AWS SESメールボックスシミュレーターにて、カスタムヘッダや添付ファイル付きのテストEメールを送信する
      • CloudWatch
        • Amazon SNS + Slack Workflowを使って、CloudWatch Alarmの通知をSlackチャンネルへ投稿する
      • Lambda
        • lambrollでAWS Lambda関数をデプロイしたときのTips
    • Heroku
      • HerokuのStackの設定
      • Heroku Postgresの運用でよく使うコマンド集
  • セキュリティ
    • Web
      • Same Origin PolicyとCORS
      • 脆弱性診断 2社同時依頼実施記録
  • Mail
    • SPF、DKIM、DMARCを使用した迷惑メール対策
  • データ分析
    • データ分析プロセス
  • SaaS
    • Zendesk
      • 問い合わせフォームの項目をサービスごとに出し分け、各サービス担当者に自動で振り分けてメールで通知する
  • イベント
    • RubyKaigi
      • RubyKaigi 2023 に現地参加しました
    • EMConf
      • EMConfJP2025_参加レポート
  • やってみた
    • IoT
      • Raspberry Pi + PaSoRi + Python で、勤怠打刻マシンを作ってみた
  • Precena Tech Book 管理
    • コンテンツ執筆時のルール
  • 関連リンク
    • プレセナエンジニア公式Twitter
GitBook提供
このページ内
  • zsh-completionとは
  • zsh-completionのインストール
  • zshのプロファイルスクリプトにzsh-completionの設定をする
  • zsh関連ファイルの権限設定を行う
  • Intel Macの場合
  • M1などApple Silicon Macの場合
  • 各コマンドラインツールでの補完の設定
  • git
  • docker
  • aws-cli

役に立ちましたか?

PDFとしてエクスポート
  1. ソフトウェア開発
  2. 開発環境構築
  3. zsh

zsh-completion

前へzsh次へMac

最終更新 2 年前

役に立ちましたか?

zsh-completionとは

zshを使うときに、補完用の情報を設定をしておくことで、例えば、git、aws-cli、dockerなどのコマンドやサブコマンドをTabキーで補完してくれるツールです。

公式サイトは、以下です。

zsh-completionのインストール

macOSを使っている前提ですが、homebrewで簡単にインストールできます。

% brew install zsh-completion

zshのプロファイルスクリプトにzsh-completionの設定をする

zsh-completionをインストールすると、以下のようなメッセージがでます。

zsh-completions: stable 0.33.0 (bottled), HEAD
Additional completion definitions for zsh
https://github.com/zsh-users/zsh-completions
/opt/homebrew/Cellar/zsh-completions/0.32.0_1 (142 files, 1.1MB) *
 Poured from bottle on 2021-05-03 at 10:22:36
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/zsh-completions.rb
License: MIT-Modern-Variant
==> Options
--HEAD
	Install HEAD version
==> Caveats
To activate these completions, add the following to your .zshrc:

 autoload -Uz compinit
 compinit
 
You may also need to force rebuild `zcompdump`:

 rm -f ~/.zcompdump; compinit
 
Additionally, if you receive "zsh compinit: insecure directories" warnings when attempting
to load these completions, you may need to run this:

 chmod -R go-w '/opt/homebrew/share/zsh'
 
zsh completions have been installed to:
 /opt/homebrew/share/zsh/site-functions
==> Analytics
install: 9,459 (30 days), 39,117 (90 days), 147,856 (365 days)
install-on-request: 9,388 (30 days), 38,843 (90 days), 146,385 (365 days)
build-error: 0 (30 days)

なお、このメッセージは、brew info zsh-completionコマンドで再表示できます。

このメッセージにしたがって、まずは、次のように .zshrc ファイル設定します。

~/.zshrc
# zsh-completionの設定
autoload -Uz compinit
compinit

zsh関連ファイルの権限設定を行う

次に、zsh関連ファイルの権限設定を行います。これも前述のbrew info で表示されるメッセージに従います。

前述の brew info で表示されるメッセージの /opt/homebrew の部分は、使用しているMacのCPUがIntel製かApple Siliconかによって異なります。

なので、環境に応じて次のようにコマンドを打ちます。

Intel Macの場合

% chmod -R go-w /usr/local/share/zsh/

M1などApple Silicon Macの場合

% chmod -R go-w /opt/homebrew/share/zsh/

あるいは、以下のコマンドを打てばどちらの環境でもOKです。

% chmod -R go-w $(brew --prefix)/share/zsh/

なお、この go-w は、g(roup)とo(thers)から(つまりuser以外から)、書き込み権限を削除(-)しています。

各コマンドラインツールでの補完の設定

git

homebrewでgitをインストールすると、自動的に /usr/local/share/zsh/site-functions/ 以下に、git用の補完設定もインストールされるので、それ以上何もする必要はありません。

gitはmacOS標準のものもありますが、上記の補完設定のために、筆者はhomebrewでgitをインストールしなおしてしまいます。

設定がうまくいっている場合、以下のように補完されます。ブランチ名などは、覚えられないので補完を使うと便利になります。

% git branch <TAB>
(ここに候補となるブランチ一覧が表示される)

docker

公式サイトに説明があるので、それに従います。手順は公式サイトに記載されていて、また、迷うところもないので、ここに手順を記載するのは省略します。

設定がうまくいっている場合、以下のような補完が使えます。

% docker container <TAB>
attach   -- Attach to a running container
commit   -- Create a new image from a container's changes
cp       -- Copy files/folders between a container and the local filesystem
create   -- Create a new container
diff     -- Inspect changes on a container's filesystem
exec     -- Run a command in a running container
export   -- Export a container's filesystem as a tar archive
inspect  -- Display detailed information on one or more containers
kill     -- Kill one or more running containers
logs     -- Fetch the logs of a container
ls       -- List containers
pause    -- Pause all processes within one or more containers
port     -- List port mappings or a specific mapping for the container
prune    -- Remove all stopped containers
rename   -- Rename a container
restart  -- Restart one or more containers
rm       -- Remove one or more containers
run      -- Run a command in a new container
start    -- Start one or more stopped containers
stats    -- Display a live stream of container(s) resource usage statistics
stop     -- Stop one or more running containers
top      -- Display the running processes of a container
unpause  -- Unpause all processes within one or more containers
update   -- Update configuration of one or more containers
wait     -- Block until one or more containers stop, then print their exit codes

aws-cli

aws-cliも公式サイトに従うだけですが、少しわかりにくいので、補足説明を追加します。

公式サイトは、以下です。

前述の前提の場合、aws_completer はすでにPATHが通っているので、やることは以下の設定を.zshrcファイルに追加するだけです。

.zshrc
  autoload bashcompinit && bashcompinit   # この行を追加
  autoload -Uz compinit
  compinit
  complete -C '/usr/local/bin/aws_completer' aws   # この行を追加

設定後は、zshを再起動します。

設定がうまくいっていれば、以下のようにawsコマンドの補完が効くようになります。

% aws s<TAB>
s3                              securityhub                     sqs
s3api                           serverlessrepo                  ssm
s3control                       service-quotas                  sso
s3outposts                      servicecatalog                  sso-admin
sagemaker                       servicecatalog-appregistry      sso-oidc
sagemaker-a2i-runtime           servicediscovery                stepfunctions
sagemaker-edge                  ses                             storagegateway
sagemaker-featurestore-runtime  sesv2                           sts
sagemaker-runtime               shield                          support
savingsplans                    signer                          swf
schemas                         sms                             synthetics
sdb                             snowball                        
secretsmanager                  sns          

なお、この記事では、 の記事に記載さた手順でインストールされている前提で補足説明をします。

本サイトの更新情報は、Twitterので発信しています。ご確認ください。

AWS CLI
株式会社プレセナ・ストラテジック・パートナーズエンジニア公式アカウント
LogoGitHub - zsh-users/zsh-completions: Additional completion definitions for Zsh.GitHub
Docker for Mac を始めよう — Docker-docs-ja 19.03 ドキュメント
公式サイトのzshの補完設定
LogoCommand completion - AWS Command Line InterfaceAWS Command Line Interface