Supertab allows you to use <Tab> for all your insert completion needs
(:help ins-completion).

Features

- Configurable to suit you needs:
- Default completion type to use.
- Prevent <Tab> from completing after/before defined patterns.
- Close vim's completion preview window when code completion is finished.
- When using other completion types, you can configure how long to 'remember'
the current completion type before returning to the default.
- Don't like using <Tab>? You can also configure a different pair of keys to
scroll forwards and backwards through completion results.
- Optional improved 'longest' completion support (after typing some characters,
hitting <Tab> will highlight the next longest match).
- Built in 'context' completion option which chooses the appropriate completion
type based on the text preceding the cursor.
- You can also plug in your own functions to determine which completion type
to use.
- Support for simple completion chaining (falling back to a different
completion type, keyword completion for example, if omni or user completion
returns no results).

- added support for chaining two completion types (falls back to the second if not results from the first).
- added setting to close completion preview window when the completion popup closes.
- improved compatibility with other plugins.
- other minor bug fixes.

- fix to not break abbreviation expansion on <cr>
- when using longest enhancement, save/restore any previous mappings for <bs>/<c-h>
- fix <cr> mapping to cooperate better with <cr> mappings of other plugins (ex. endwise)
- created variables to set user defined list of before or after patterns for which completion should not be attempted (:h supertab-preventcomplete)

- Refactored the contextual completion and default discovery support.
- Context completion now supports plugable functions to determine which
completion type to use.
- Default discovery is now a part of context completion.
- NOTE: Several non-backwards compatible configuration changes where made.
- g:SuperTabRetainCompletionType is now g:SuperTabRetainCompletionDuration
and accepts one of 'none', 'insert', or 'session'.
- new setting g:SuperTabCompletionContexts defines which context completion
functions are consulted.
- g:SuperTabDefaultCompletionTypeDiscovery is now
g:SuperTabContextDiscoverDiscovery and requires that
g:SuperTabContextDefaultCompletionType is set to 'context' and that
's:ContextDiscover' is in your g:SuperTabCompletionContexts list.
Please see the updated "Global Variables" fold in supertab.vim for additional
details and examples.

Added support for default completion type 'context', which will result in super tab attempting to determine which completion type to use (file, user/omni, keyword) based on the text preceding the cursor (Based on suggestion by François Beaubert).

- added config variable to specify discovery list used to determine the default completion type to use for the current buffer. (based on request by Den Yao)
- added config variables to changed the default mappings for forward backwards completion. (based on request by Li Chaoqun)
- added config variable to preselect the first entry when completeopt has 'menu' and 'longest'. (based on suggestion and patch by Mike Lundy)

- Added g:SuperTabMidWordCompletion variable to determine if completion should be done within a word (enabled by default). (based on request by Charles Gruenwald)
- Applied patch to fix <s-tab> cycling through completion results. (submitted by Lukasz Krotowski)