sponsor Vim development Vim logo Vim Book Ad

SnippetCompleteSnipMate : Integrate snipMate snippets into SnippetComplete plugin.

 script karma  Rating 0/0, Downloaded by 1262  Comments, bugs, improvements  Vim wiki

created by
Ingo Karkat
script type
Simple expansions can be done with Vim's built-in abbreviations, but for
form-like text fragments that contain multiple cursor stops or mirrored
replacements of typed text, one needs a plugin like the popular snipMate
(vimscript #2540). As many snippets start simple but are extended later on, it
is useful to have a completion for both abbreviations and snippets, so that
you don't need to remember how the text fragment you want to use is defined.

Apart from the integration with abbreviations, this plugin offers the
following advantages over the CTRL-R <Tab> completion built into snipMate
- Summary rendering of the snippet expansion in the completion popup menu,
  including the number of lines the snippet expands to and the number of
  multi-snips alternatives.
- Preview of the full snippet / all multi-snips (when 'completeopt' contains

This plugin integrates snipMate snippets into the insert mode completion for
Vim abbreviations of the SnippetComplete.vim plugin (vimscript #2926), and
offers an additional completion only for snipMate snippets.

The plugin extends the i_CTRL-X_] completion of Vim insert mode
abbreviations from the SnippetComplete.vim plugin with snippets from
snipMate. Just continue using that as before.
Snippets appear in the completion popup prefixed with "%N", where N is the
number of lines that the snippet expands to. Multi-snips appear as "M*N",
where M is the number of alternatives.

Alternatively, this plugin provides an additional CTRL-X <Tab> completion
solely for snipMate snippets, excluding Vim abbreviations.

CTRL-X <Tab>            Find matches for snipMate snippets that start with the
                        text in front of the cursor.
                        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.
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 SnippetCompleteSnipMate*.vmb.gz
    :so %

To be able to access its snippets, snipMate must be patched. Open
~/.vim/plugin/snipMate.vim and insert the following function at the bottom:
        fun! GetSnipsInCurrentScope()
                let snips = {}
                for scope in [bufnr('%')] + split(&ft, '\.') + ['_']
                        call extend(snips, get(s:snippets, scope, {}), 'keep')
                        call extend(snips, get(s:multi_snips, scope, {}), 'keep')
                return snips

To uninstall, use the :RmVimball command.

- Requires Vim 7.0 or higher.
- Requires the SnippetComplete.vim plugin (vimscript #2926), version 2.10 or
- Requires the snipMate plugin (vimscript #2540)

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>(SnippetCompleteSnipMate) mapping target _before_ sourcing the script
(e.g. in your vimrc):
    imap <C-x><Tab> <Plug>(SnippetCompleteSnipMate)
If you don't need the additional mapping, disable it via:
    imap <Plug>Disable(SnippetCompleteSnipMate) <Plug>(SnippetCompleteSnipMate)

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
SnippetCompleteSnipMate-1.01.vmb.gz 1.01 2013-01-19 7.0 Ingo Karkat CHG: Change default mapping to the more intuitive (for default snipMate trigger) i_CTRL-X_<Tab>.
SnippetCompleteSnipMate-1.00.vmb.gz 1.00 2012-10-20 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.