sponsor Vim development Vim logo Vim Book Ad

SnippetComplete : Insert mode completion that completes defined abbreviations and other snippets.

 script karma  Rating 7/4, Downloaded by 606    Comments, bugs, improvements  Vim wiki

created by
Ingo Karkat
script type
Insert mode abbreviations and snippets can dramatically speed up editing, but
how does one remember all those shortcuts that are rarely used? You can list
all insert mode abbreviations via :ia to break out of this vicious circle,
but switching to command mode for that is cumbersome.

This plugin offers a context-sensitive insert mode completion to quickly list
and complete defined abbreviations directly while typing.

- The SnippetCompleteSnipMate.vim plugin (vimscript #4276) extends the
  completion with snippets for the popular snipMate plugin (vimscript #2540).

In insert mode, optionally type part of the snippet shortcut or a fragment
from its expected expansion, and invoke the snippet completion via CTRL-X ].
You can then search forward and backward via CTRL-N / CTRL-P, as usual.

CTRL-X ]                Find matches for abbreviations that start with the
                        text in front of the cursor. If other snippet types
                        are registered, show those, too.
                        If no matches were found that way, matches anywhere in
                        the snippet or in the snippet's expanded text will be
                        shown. So if you can't remember the shortcut, but a
                        word fragment from the resulting expansion, just try
                        with that.

                        There are three types of abbreviations (full-id,
                        end-id and non-id), which can consist of different
                        characters. Thus, there can be more than one candidate
                        for the existing completion base, e.g. "pre@c" can
                        expand into a full-id abbreviation starting with "c"
                        or into a non-id one starting with "pre@c". The
                        completion indicates such a ambiguity through the
                        message "base n of m; next: blah", and you can cycle
                        through the different completion bases by repeating
                        the i_CTRL-X_] shortcut.

                        Matches are selected and inserted as with any other
                        ins-completion, see popupmenu-keys. If you use
                        <Space> or i_CTRL-] to select an abbreviation, it'll
                        be expanded automatically.

CTRL-X g]               Find matches for buffer-local abbreviations that start
                        with the text in front of the cursor. If other snippet
                        types are registered, show those (local ones), too.
install details
This script is packaged as a vimball. If you have the "gunzip" decompressor
in your PATH, simply edit the *.vmb.gz package in Vim; otherwise, decompress
the archive first, e.g. using WinZip. Inside Vim, install by sourcing the
vimball or via the :UseVimball command.
    vim SnippetComplete*.vmb.gz
    :so %
To uninstall, use the :RmVimball command.

- Requires Vim 7.0 or higher.
- Requires the CompleteHelper.vim plugin (vimscript #3914), version 1.10 or
- Requires the ingo-library.vim plugin (vimscript #4433), version 1.009 or

For a permanent configuration, put the following commands into your vimrc:

If you want to use a different mapping, map your keys to the
<Plug>(SnippetComplete...) mapping targets _before_ sourcing the script (e.g.
in your vimrc).
For example, to use CTRL-X <Tab> as the completion trigger, define this:
    imap <C-x><Tab> <Plug>(SnippetComplete)

There exist multiple snippet systems that extend the built-in abbreviations
with support for filetype-specific and more complex expansions, like allowing
placeholders and expansion of in-line scriptlets. One popular one is the
snipMate plugin (vimscript #2540).
Since there is a seamless transition from simple abbreviation to complex
snippet, it may help to have a completion for both sources. To support this,
this plugin allows to write completions for other snippet plugins with just a
little bit of configuration and a function to retrieve the valid snippets.
This completion can be stand-alone via a different mapping, or it can add the
snippets to the i_CTRL-X_] completion mapping provided here.

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
SnippetComplete-2.20.vmb.gz 2.20 2014-04-03 7.0 Ingo Karkat - ENH: Add CTRL-X g] mapping variant that limits the results to buffer-local abbreviations. This is useful to quickly get an overview of filetype-specific abbreviations, which are usually drowned in the sea of global ones (and snippets if integrated).
- Add dependency to ingo-library (vimscript #4433). *** You need to separately install ingo-library (vimscript #4433) version 1.009 (or higher)! ***
SnippetComplete-2.11.vmb.gz 2.11 2013-01-19 7.0 Ingo Karkat FIX: Must use numerical sort() for s:lastCompletionsByBaseCol.
SnippetComplete-2.10.vmb.gz 2.10 2012-10-19 7.0 Ingo Karkat - ENH: When no base doesn't match with the beginning of a snippet, fall back to matches either anywhere in the snippet or in the snippet expansion.
- Truncate very long or multi-line snippet expansions in the popup menu. This requires the CompleteHelper plugin. When the entire snippet doesn't fit into the popup menu, offer it for showing in the preview window. *** THIS PLUGIN NOW REQUIRES THE CompleteHelper PLUGIN (vimscript #3914) ***
SnippetComplete.vba.gz 2.01 2012-08-13 7.0 Ingo Karkat - FIX: Vim 7.0/1 need preloading of functions referenced in Funcrefs.
SnippetComplete.vba.gz 2.00 2012-05-08 7.0 Ingo Karkat Modularize and generalize for completing other types of snippets (e.g. from snipMate).
SnippetComplete.vba.gz 1.01 2010-09-27 7.0 Ingo Karkat Using separate autoload script to help speed up Vim startup.
SnippetComplete.vba.gz 1.00 2010-01-14 7.0 Ingo Karkat Initial upload
ip used for rating:

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.
SourceForge.net Logo