Skip to content

feat(zsh): carapace でマルチシェル補完に移行 - #77

Merged
tunepolo merged 1 commit into
mainfrom
feat/carapace-completion
Aug 12, 2026
Merged

feat(zsh): carapace でマルチシェル補完に移行#77
tunepolo merged 1 commit into
mainfrom
feat/carapace-completion

Conversation

@tunepolo

Copy link
Copy Markdown
Owner

概要

zsh の補完エンジンとして carapace を導入します。653 コマンドの spec を内蔵しているため、これまで個別に補完スクリプトを用意していなかった docker / kubectl / aws / terraform などもまとめて説明文付きで補完できるようになります。

変更内容

ファイル 変更
dot_Brewfile brew "carapace" を追加
private_dot_config/sheldon/plugins.toml 他の補完プラグインより後・zsh-syntax-highlighting より前に [plugins.carapace] を追加
private_dot_config/sheldon/plugins.toml zsh-better-npm-completion を削除(carapace と役割が重複)
dot_zsh/custom.zsh npm completion 生成コード(約60行)を削除
dot_zshrc compinit を sheldon より先に走らせる理由のコメントを実態に合わせて修正

読み込み順について

carapace は約 1000 コマンドに対して compdef を張るため、他の補完プラグインより後に読み込む必要があります。逆に zsh-syntax-highlighting は最後に置く既存方針を維持したいので、その直前に挿入しています。

custom.zsh の npm ブロックを削除した理由

custom.zshdot_zshrc 内で sheldon の後に source されるため、埋め込まれていた compdef _npm_completion npm が carapace の npm 補完を上書きしていました。carapace 側の spec に統一するために削除します。

動作確認

macOS 26.6.1 / zsh 5.9.2 / carapace-bin 1.7.3 で確認。

compdef の登録状況zsh -i -c で確認)

コマンド 変更前 変更後
npm _npm_completion _carapace_completer
git _git _carapace_completer
gh _gh _carapace_completer
docker / kubectl / aws / terraform 未登録 _carapace_completer

compdef 総数: 1992 → 2408

実際の TAB 補完zsh/zpty で対話シェルを起動して採取)

docker run --r<TAB> で説明文付きの候補が表示されることを確認:

Completing flags
--read-only  -- Mount the container's root filesystem as read only
--restart    -- Restart policy to apply when a container exits
--rm         -- Automatically remove the container and its associated anonymous volumes
--runtime    -- Runtime to use for this container

起動時間: 0.11 秒(carapace _carapace の生成コストは約 10ms、生成されるスクリプトは 51 行)

既存チェック: ./shellcheck.sh クリーン、tests/*.test.sh 11 件すべて pass

補足

  • 特定コマンドを zsh 標準の補完に戻したい場合は CARAPACE_EXCLUDES='git,npm' を指定できます
  • 大文字小文字を無視したマッチにするには CARAPACE_MATCH=1 を指定します

🤖 Generated with Claude Code

zsh の補完エンジンとして carapace を導入する。653 コマンドの spec を
内蔵しており、docker / kubectl / aws / terraform など個別に補完スクリプトを
用意していなかったコマンドもまとめて説明文付きで補完できる。

- dot_Brewfile: carapace を追加
- plugins.toml: 他の補完プラグインより後に carapace を読み込む
  (compdef を上書きさせるため。syntax-highlighting より前に置く)
- plugins.toml: zsh-better-npm-completion を削除(carapace と役割が重複)
- custom.zsh: 旧 `npm completion` 生成コードを削除。sheldon より後に
  読み込まれて compdef _npm_completion npm で carapace を上書きしていた
- dot_zshrc: compinit を先に走らせる理由のコメントを実態に合わせて修正

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@tunepolo
tunepolo merged commit 6537c1c into main Aug 12, 2026
5 checks passed
@tunepolo
tunepolo deleted the feat/carapace-completion branch August 12, 2026 00:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant