Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/perlpunk/shell-completions
Collection of shell (bash, zsh) tab completion scripts for various command line tools
https://github.com/perlpunk/shell-completions
autocomplete bash completion tab-completion yaml zsh
Last synced: 14 days ago
JSON representation
Collection of shell (bash, zsh) tab completion scripts for various command line tools
- Host: GitHub
- URL: https://github.com/perlpunk/shell-completions
- Owner: perlpunk
- License: mit
- Created: 2018-01-30T14:05:28.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2020-09-02T20:12:16.000Z (about 4 years ago)
- Last Synced: 2024-10-03T12:42:16.361Z (about 1 month ago)
- Topics: autocomplete, bash, completion, tab-completion, yaml, zsh
- Language: Shell
- Homepage:
- Size: 236 KB
- Stars: 37
- Watchers: 4
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Collection of shell tab completion scripts for various command line tools
These scripts are automatically generated from YAML files which can be found
under `specs/`.The format supports nested subcommands, specifying enums for possible
parameters/option values and dynamic completion calling an external
command.The generation is done with the `appspec` tool (see "Developing" below).
Currently it supports bash and zsh completions.
## List of commands
* `cpan-upload` - upload a distribution to the CPAN
* `cpan` - easily interact with CPAN from the command line
* `cpanm` - Install CPAN modules
* `dancer2` - Dancer2 command line interface
* `dzil` - do stuff with your dist
* `fallocate` - Preallocate or deallocate space to a file
* `fatpack` - Pack perl script and modules into standalone script
* `file` - determine file type
* `fzf` - a command-line fuzzy finder
* `h2xs` - convert .h C header files to Perl extensions
* `htpasswd` - Manage user files for basic authentication
* `hypnotoad` - Hypnotoad HTTP and WebSocket server
* `jq` - Command-line JSON processor
* `json_pp` - JSON::PP command utility
* `json_xs` - JSON::XS commandline utility
* `locate` - Find files by name
* `lwp-request` - Simple command line user agent (Aliases GET, HEAD, POST)
* `mojo` - The Mojolicious command system
* `morbo` - Morbo HTTP and WebSocket development server
* `mpath` - display the full path to a perl module (installed locally)
* `pip` - A tool for installing and managing Python packages
* `plackup` - Run PSGI application with Plack handlers
* `pod2html` - convert .pod files to .html files
* `prove` - Run tests through a TAP harness
* `starman` - High-performance preforking PSGI/Plack web server
* `tower-cli` - Ansible Tower Commandline
* `yamllint` - A linter for YAML files
* `ysh` - The YAML Test Shell
* `zild` - Dist::Zilla Mixed Up## Installation
git clone https://github.com/perlpunk/shell-completions
## Usage
Look into the `specs/commandname.yaml` for specific usage instructions.
### Bash
For a specific script, just source it:
$ source /path/to/shell-completions/bash/commandname.bash
Put this in your `.bashrc` for using all completions:
for i in /path/to/shell-completions/bash/*.bash; do source $i; done
#### Using only one `` keypress like in zsh
You can enable this by putting the following in your `~/.inputrc`:
set show-all-if-ambiguous on
See [GNU Readline Init File Syntax](https://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html).
### Zsh
For activating the completions, you can do:
% fpath=(/path/to/shell-completions/zsh $fpath)
% compinitTo just try out completion for one specific script, you can also do:
% source /path/to/shell-completions/zsh/_commandname
% compdef _commandname commandnamePut this in your `.zshrc` for activating all completions:
# before the compinit call
fpath=('/path/to/shell-completions/zsh' $fpath)This way zsh won't load all functions at startup, but the completions will get
autoloaded dynamically when the command is first used.When developing a new completion, after a change it's enough to source it,
without calling `compinit` again:% source /path/to/shell-completions/zsh/_commandname
## Developing
The `appspec` tool is used to generate the completions. You don't need it
if you just want to use the completions.If you want to modify or add a new completion, install the `App::AppSpec`
perl module, or use the standalone script:% git clone https://github.com/perlpunk/App-AppSpec-p5 -b standalone appspec
% PATH=$PWD/appspec/bin:$PATHFor more details see https://github.com/perlpunk/App-AppSpec-p5.
Create a new specification `specs/commandname.yaml` and type:
make commandname
## See Also
* https://github.com/zsh-users/zsh-completions - Over 130 completion scripts
for zsh
* https://github.com/unixorn/awesome-zsh-plugins - A collection of ZSH
frameworks, plugins & themes
* https://github.com/complete-shell - A different approach for generating
and installing completions for bash