CompleteShell - Tab Completion for Every Program and Every Shell

By Ingy döt Net

Elevator Pitch

Some command line programs have tab completion, some don’t. Sometimes it rocks, sometimes it sucks. Some shells do tab completion better than others.

CompleteShell makes it trival to have the best possible tab completion everywhere and for everything!


Tab completion is one of those programming things that gets added after the fact. You write a cool tool, it gains popularity and then someone wants tab completion. If you take the time to learn how to do it, you write a mediocre completion setup for Bash. Then people want you to support Zsh and Fish and maybe others. Each shell has its own way of doing things.

Wouldn’t it be cool if you could easily define how your commands complete, and then all the tab completion code was generated for you? Wouldn’t it be cool if Bash completion did some of the more modern things that Zsh and Fish do?

CompleteShell is your new friend. It’s a simple DSL for defining command completion that will compile to any shell. The DSL allows you to access a Standard Library of common useful shell code to create completions. It also allows you to write your own function plugins that (in any language including Perl).

CompleteShell takes Bash completion to places you never been before. For example, with Zsh or Fish, every completion has a description. Now Bash can do that too.

Ingy will show you this cool new tool, how to use it, how to author completions, and how to create a completely completable world!