A feature of many CommandLineInterfaces.
Say you're using the Bash shell, and you want to run the command "enlightenment". You don't have to type the whole thing -- "enl<Tab>" should fill it out.
Some programs that have this feature:
shells (Bash, Tcsh, Zsh, Windows NT/2000 CMD.EXE...)
Bash, tcsh and Zsh have programmable tab completion. You can progam the shell to offer different completions depending on the current command. E.g. completion for the make command could expand targets in the Makefile in the current directory, completion for the mount command could complete on entries in /etc/fstab, completion of the java command could complete class names by finding .class files on your CLASSPATH, etc. etc.
CMD.EXE: Works provided HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar is set to 9. On Win2k this only completes filenames, not executables elsewhere in your path.
Several Microsoft development environments (including Visual Studio and the VBA editor in the Office products) have a similar feature called IntelliSense. In addition to command completion it displays popup lists of methods, functions, parameters, variables, constants and other such things. Very handy when you don't want to type out marrSurveyResponseData.
vim - Ctrl+P/Ctrl+N == joy. Use (in insertmode) Ctrl+X Ctrl+F to complete paths, and take a look at ':help i_^X'
Google supertab.vim. All those double control codes make me want to throw the heck up. TabCompletion is now a reality in vim - thank goodness!
Eclipse - Ctrl-Space activates autocompletion in much the same was as IntelliSense; Ctrl-1 activates a light-weight refactoring/source modification popup (renaming, quickfixs, etc), and with the LunarEclipse plugins, ctrl+. does a very light-weight completion (will complete any word in any open file; look ma! no menus! )
TextMate - These are called "snippets" in textmate. The snippets are a part of a bundle of functionality for a given programming language or domain. They can be accessed through Bundles in the menu. The snippets end with ->|, and are a greyish color. These are also programmable.