Go to file
Zhong Liu f4304d59cc fix bug when vim option 'selection' is 'exclusive' (#883)
here is a vim option ``selection``.
if the value is `exclusive`, the mark `'>` is one more then real visual selection.
so var `ebyte` or `ec` must subtract 1.

and that is not a windows bug.
because gvim on windows sourced `$VIMRUNTIME\mswin.vim` by default.
the line 17 of `mswin.vim` execute `:behave mswin` will change option `selection` to `exclusive`.

more deailt in issue #863
2018-04-11 10:19:45 +02:00
.github Update issue_template.md (#959) 2018-04-09 15:54:25 +02:00
after/plugin Remove bootstrap.vim. Simplify startup. 2015-07-11 16:17:50 +02:00
autoload Disable auto detecting changes to snippet files on expansion (#967) 2018-04-11 00:52:48 +02:00
ctags Support TagBar for snippets files 2014-07-05 19:36:38 -07:00
doc Disable auto detecting changes to snippet files on expansion (#967) 2018-04-11 00:52:48 +02:00
docker Remove travis caching and avoid rate limiting. (#962) 2018-04-09 15:05:40 +02:00
ftdetect Improve/simplify filetype handling for buffers (#745) 2016-09-07 19:51:16 +07:00
ftplugin Disable auto detecting changes to snippet files on expansion (#967) 2018-04-11 00:52:48 +02:00
plugin autotrigger: make snippets expand without <tab> 2015-10-09 16:00:24 +06:00
pythonx/UltiSnips fix bug when vim option 'selection' is 'exclusive' (#883) 2018-04-11 10:19:45 +02:00
rplugin/python3/deoplete/sources Mark source as volatile (#844) 2018-03-30 20:37:02 +02:00
syntax syntax fix for subdirs 2016-09-07 11:17:52 +03:00
test fix bug when vim option 'selection' is 'exclusive' (#883) 2018-04-11 10:19:45 +02:00
utils Applied pyformat on entire codebase. 2015-01-20 21:26:03 +01:00
.gitignore ignore .ropeproject 2016-03-28 12:21:07 +06:00
.travis.yml Remove travis caching and avoid rate limiting. (#962) 2018-04-09 15:05:40 +02:00
ChangeLog Updated release date for 3.1. 2018-03-30 20:44:51 +02:00
CONTRIBUTING.md Adds a CONTRIBUTING.md file. 2018-04-05 22:07:31 +02:00
COPYING.txt Added a license file. 2013-10-29 07:22:06 +01:00
Dockerfile Remove travis caching and avoid rate limiting. (#962) 2018-04-09 15:05:40 +02:00
Dockerfile.repro Rename scripts -> docker. Make repro more useful. 2018-04-05 21:52:33 +02:00
Makefile Adds a CONTRIBUTING.md file. 2018-04-05 22:07:31 +02:00
pylintrc Less verbose pylint errors. 2015-01-22 08:00:43 +01:00
README.md Mention deoplete as supported. 2018-04-08 21:47:13 +02:00
test_all.py Adds a CONTRIBUTING.md file. 2018-04-05 22:07:31 +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 deoplete. 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.

UltiSnips was started in Jun 2009 by @SirVer. In Dec 2015, maintenance was handed over to @seletskiy.

What can you do with UltiSnips?

  1. Advanced snippets:

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: