Go to file
Greg Hurrell 3eabbe71a3 Use <nomodeline> when firing user autocmds
As recommended by the Vim help (`:h <nomodeline>`):

    After applying the autocommands the modelines are
    processed, so that their settings overrule the
    settings from autocommands, like what happens when
    editing a file. This is skipped when the <nomodeline>
    argument is present. You probably want to use
    <nomodeline> for events that are not used when loading
    a buffer, such as |User|.

Fixes: https://github.com/SirVer/ultisnips/issues/542
2015-08-06 22:47:29 -07:00
after/plugin Remove bootstrap.vim. Simplify startup. 2015-07-11 16:17:50 +02:00
autoload fix python3, finally 2015-07-29 20:08:49 +06:00
ctags Support TagBar for snippets files 2014-07-05 19:36:38 -07:00
doc Pipe-quoting helptag reference to UltiSnips-context-snippets 2015-07-31 10:46:02 -05:00
ftdetect Do not run autocommands when using --noplugin. 2015-08-04 07:57:38 +02:00
ftplugin Tweak the ftplugin 2014-08-26 01:03:15 -07:00
plugin Only set autocommands when there are snippets. 2015-07-11 17:11:04 +02:00
pythonx/UltiSnips Use <nomodeline> when firing user autocmds 2015-08-06 22:47:29 -07:00
syntax pre/post-expand and post-jump actions 2015-07-29 20:08:34 +06:00
test fix not cleared context 2015-07-29 20:08:49 +06:00
utils Applied pyformat on entire codebase. 2015-01-20 21:26:03 +01:00
.bzrignore Ignore .bzr-repo 2010-03-05 14:31:40 +01:00
.gitignore Fixed ignored list in .gitignore 2011-12-30 08:20:54 +01:00
.travis.yml Add a webhook for gitter.im. 2015-07-18 22:53:41 +02:00
ChangeLog Updated ChangeLog. 2015-07-21 14:29:50 +02:00
COPYING.txt Added a license file. 2013-10-29 07:22:06 +01:00
pylintrc Less verbose pylint errors. 2015-01-22 08:00:43 +01:00
README.md Added waffle.io badge. 2015-07-18 22:57:19 +02:00
test_all.py Pass the expected python version to the tests. 2015-07-18 12:49:23 +02:00
travis_install.sh Add a testing interface that works for Neovim. 2015-07-14 21:58:30 +02:00
travis_test.sh Pass the expected python version to the tests. 2015-07-18 12:49:23 +02:00

Build Status Stories in Ready Gitter

UltiSnips

UltiSnips is the ultimate solution for snippets in Vim. It has tons of features and is very fast.

GIF Demo

In this demo I am editing a python file. I first expand the #! snippet, then the class snippet. The completion menu comes from YouCompleteMe, UltiSnips also integrates with neocomplete. I can jump through placeholders and add text while the snippet inserts text in other places automatically: when I add Animal as a base class, __init__ gets updated to call the base class constructor. When I add arguments to the constructor, they automatically get assigned to instance variables. I then insert my personal snippet for print debugging. Note that I left insert mode, inserted another snippet and went back to add an additional argument to __init__ and the class snippet was still active and added another instance variable.

The official home of UltiSnips is at https://github.com/sirver/ultisnips. Please add pull requests and issues there.

Quick Start

This assumes you are using Vundle. Adapt for your plugin manager of choice. Put this into your .vimrc.

" Track the engine.
Plugin 'SirVer/ultisnips'

" Snippets are separated from the engine. Add this if you want them:
Plugin 'honza/vim-snippets'

" Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe.
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"

" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"

UltiSnips comes with comprehensive documentation. As there are more options and tons of features I suggest you at least skim it.

Screencasts

From a gentle introduction to really advanced in a few minutes. The blog posts of the screencasts contain more advanced examples of the things discussed in the videos.

Also the excellent Vimcasts dedicated three episodes to UltiSnips: