/argc-completions

{bash,zsh,fish,powershell,nushell}-completions for 1000+ commands.

Primary LanguageShellMIT LicenseMIT

Argc-completions

{bash,zsh,fish,powershell,nushell}-completions for 1000+ commands.

argc-completions

Features

  • Autocomplete for 1000+ commands (full list).
  • Automatically generate completion scripts from the help text or man pages.
  • Dynamic completion leads to fewer scripts loading and faster terminal startup.
  • Easily upgrade completion scripts as command are upgraded.
  • Cross shells: bash/zsh/powershell/fish/nushell/elvish/xonsh/tcsh.
  • Cross platforms: linux, macOS, and Windows.

Amazing features that native completion lacks or is difficult to implement

Feature Showcase
Parallel Computing complete-git-checkout
 _choice_ref() { 
   _argc_util_parallel _choice_branch ::: _choice_tag ::: _choice_head
}
Fetch remote data complete-cargo-add
Complete multiple values
(comma-seperated)
complete-dd-iflag
Complete multiple parts complete-rustup-target-add
Complete key-value pairs complete-ssh-o
Complete for plugins
(git,cargo ...)
complete-cargo-nextest
Delegate to another command
(sudo,doas,npx...)
complete-yarn-workspace
Style & color complete-colors

Getting Started

git clone https://github.com/sigoden/argc-completions.git
cd argc-completions
./scripts/download-tools.sh
./scripts/setup-shell.sh bash  # bash/zsh/powershell/fish/nushell/elvish/xonsh/tcsh

For Windows, please run the above code in Git Bash. For macOS, brew install bash gawk gnu-sed to avoid compatibility issues.

Tools downloaded by ./scripts/download-tools.sh:

  • argc: completion engine
  • yq: YAML/JSON/XML/CSV/TOML processor

Uninstall easily

  1. Delete the argc-completions directory that you have downloaded.
  2. Undo the changes made to the shell rcfile (~/.bashrc, ~/.zshrc, ...).

Generate your own completion script

./scripts/generate.sh your-command

generate

To learn how generate works, see docs/generate.md

To learn various complete patterns, see docs/complete-patterns.md

License

Argc-completions is made available under the terms of the MIT License.

See the LICENSE file for license details.