⚡ zsh-more-completions
May 6, 2026 · View on GitHub
███▄ ▄███▓ ▒█████ ██▀███ ▓█████
▓██▒▀█▀ ██▒▒██▒ ██▒▓██ ▒ ██▒▓█ ▀
▓██ ▓██░▒██░ ██▒▓██ ░▄█ ▒▒███
▒██ ▒██ ▒██ ██░▒██▀▀█▄ ▒▓█ ▄
▒██▒ ░██▒░ ████▓▒░░██▓ ▒██▒░▒████▒
░ ▒░ ░ ░░ ▒░▒░▒░ ░ ▒▓ ░▒▓░░░ ▒░ ░
░ ░ ░ ░ ▒ ▒░ ░▒ ░ ▒░ ░ ░ ░
░ ░ ░ ░ ░ ▒ ░░ ░ ░
░ ░ ░ ░ ░ ░
▄████▄ ▒█████ ███▄ ▄███▓ ██▓███ ██▓ ▓█████▄▄▄█████▓ ██▓ ▒█████ ███▄ █▓ ██████
▒██▀ ▀█ ▒██▒ ██▒▓██▒▀█▀ ██▒▓██░ ██▒▓██▒ ▓█ ▀▓ ██▒ ▓▒▓██▒▒██▒ ██▒▓██▒█ █▒▒██ ▒
▒▓█ ▄ ▒██░ ██▒▓██ ▓██░▓██░ ██▓▒▒██░ ▒███ ▒ ▓██░ ▒░▒██▒▒██░ ██▒▒██░ █ █░░ ▓██▄
▒▓▓▄ ▄██▒▒██ ██░▒██ ▒██ ▒██▄█▓▒ ▒▒██░ ▒▓█ ▄░ ▓██▓ ░ ░██░▒██ ██░░██ █ █ ▒ ██▒
▒ ▓███▀ ░░ ████▓▒░▒██▒ ░██▒▒██▒ ░ ░░██████▒░▒████▒ ▒██▒ ░ ░██░░ ████▓▒░░▒██▒ █ ██▒██████▒▒
░ ░▒ ▒ ░░ ▒░▒░▒░ ░ ▒░ ░ ░▒▓▒░ ░ ░░ ▒░▓ ░░░ ▒░ ░ ▒ ░░ ░▓ ░ ▒░▒░▒░ ░▒▓░▒▓▒ ▒ ▒▓▒ ▒ ░
░ ▒ ░ ▒ ▒░ ░ ░ ░░▒ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ▒ ░ ░ ▒ ▒░ ░▒ ░ ░ ░ ░▒ ░ ░
░ ░ ░ ░ ▒ ░ ░ ░░ ░ ░ ░ ░ ▒ ░░ ░ ░ ▒ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░
"The shell is the street. The completions are the chrome."
// WHAT IS THIS
A massive zsh completions plugin — over 19.1k command completions wired into compsys. Most were auto-generated by Python scripts that jacked into --help output and man pages, ripping completion data straight from the source. But then all completions have been cleaned, verified and updated with latest command options. Many have been handwritten as well. Architecture-prefixed completions live in the architecture_src directory. A large ZUnit suite (see // STATS and // TESTING) validates structure, syntax, and coverage.
Directory layout:
src/ main completions
more_src/ additional completions
man_src/ completions parsed from man pages
override_src/ overrides (prepended to fpath)
architecture_src/ cross-architecture toolchains
// JACK IN
Zinit [RECOMMENDED]
~/.zshrc
source "$HOME/.zinit/bin/zinit.zsh"
zinit ice lucid nocompile wait'0e' nocompletions
zinit load MenkeTechnologies/zsh-more-completions
NOTE: The
nocompletionsice prevents zinit from symlinking all completions into~/.zinit/completions. Instead the plugin directly manipulatesfpath— this letsoverride_srccompletions take priority over defaults while keeping system completions untouched.
Oh My Zsh
cd "$HOME/.oh-my-zsh/custom/plugins" && git clone https://github.com/MenkeTechnologies/zsh-more-completions.git
Add zsh-more-completions to your plugins array in ~/.zshrc.
OMZ only adds plugin root to fpath, so completions in subdirectories won't load without intervention. You need to wire the nested source dirs into fpath before OMZ runs compinit:
# OMZ does not add nested comp dirs to fpath so do it here, assume *src has completions
for plug in ${plugins[@]}; do
if [[ -d "$ZSH/custom/plugins/$plug" ]]; then
# null glob - no error
for dir in "$ZSH/custom/plugins/$plug/"*src(N); do
if [[ -d "$dir" ]]; then
if [[ -z ${fpath[(r)$dir]} ]];then
if [[ $dir = *override* ]]; then
fpath=($dir $fpath)
else
fpath=($fpath $dir)
fi
fi
fi
done
fi
done
Manual Install
git clone https://github.com/MenkeTechnologies/zsh-more-completions.git
Copy all _* files from the source directories to somewhere on your fpath.
// BOOT SEQUENCE
After install, initialize the completion system:
autoload -Uz compinit && compinit
For faster shell startup, cache the ~/.zcompdump:
compinit -C
This skips the security check and loads the cached dump directly — dramatically faster boot times.
// STATS
Counts change constantly; do not edit totals by hand. From the repo root:
zsh scripts/print-repo-stats.zsh
This prints _-prefixed completion file counts per directory, total_completions, and zunit_tests (number of @test entries under tests/).
| Metric | How it is obtained |
|---|---|
| Completion files per dir | scripts/print-repo-stats.zsh (uses find … -name '_*') |
| ZUnit tests | grep '^@test' tests/*.zsh | wc -l (same as script output) |
| Generation method | Python scripts parsing --help + man pages |
| License | See license.md |
// TESTING
From the repository root, with ZUnit on your PATH:
zunit tests/*.zsh
GitHub Actions runs the same command on Ubuntu. On macOS, a wrong-case path can still stat the file; entries in tests/t-more-src-existence.zsh must use the exact basename as on disk (e.g. _linguist, not _Linguist) so Linux CI passes. tests/t-repo-invariants.zsh locks down repo metadata: blacklist.txt integrity, .github/workflows/ci.yml contract, license.md, and absence of tracked .zwc files.
[ SIGNAL LOST ]
[ RECONNECTING... ]
[ LINK ESTABLISHED ]
Wake up, samurai. Your shell has work to do.