f4df1bd9e8
It's possible that when using _vim_dec with Python 2 that we fail to convert the string to Unicode and just return the raw string instead. This could happen, for instance, when there was arbitrary data in the unnamed register during the save/restore process. During restoration, we'd attempt to encode the string, but this may fail with a UnicodeDecodeError as Python attempts to first convert to Unicode and then to the requested encoding. To fix this, let's also catch `UnicodeDecodeError` and return the raw string if we fail to convert. |
||
---|---|---|
after/plugin | ||
autoload | ||
ctags | ||
doc | ||
ftdetect | ||
ftplugin | ||
plugin | ||
pythonx/UltiSnips | ||
syntax | ||
test | ||
utils | ||
.bzrignore | ||
.gitignore | ||
ChangeLog | ||
COPYING.txt | ||
pylintrc | ||
README.md | ||
test_all.py |
UltiSnips
UltiSnips is the ultimate solution for snippets in Vim. It has tons of features and is very fast.
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.