Ⅰ. 插件描述
vim-snipmate default snippets (Previously snipmate-snippets)Ⅱ. 基本信息
|
Ⅲ. 安装方法
使用Vundle管理器安装
在你的.vimrc下添加:Plugin 'gnperdue/vim-snippets-the-thing-itself'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall
对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。
使用NeoBundle管理器安装
在你的.vimrc下添加:NeoBundle 'gnperdue/vim-snippets-the-thing-itself'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall
使用VimPlug管理器安装
在你的.vimrc下添加:Plug 'gnperdue/vim-snippets-the-thing-itself'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall
使用Pathogen管理器安装
在终端中运行以下命令:cd ~/.vim/bundle
git clone https://github.com/gnperdue/vim-snippets
Ⅳ. 文档说明
IMPORTANT: comment on: What about merging whith Ultisnip using its engine
Snipmate & UltiSnip Snippets
This repository contains snippets files for various programming languages.
It is community-maintained and many people have contributed snippet files and
other improvements already.
Contents
snippets/*: snippets using snipmate format
UltiSnips/*: snippets using UltiSnips format
Snippet engines
There are different forks of snippet engines which allow the user to insert
sippets by typing the name of a snippet hitting the expansion mapping.
garbas/vim-snipmate [4]:
VimL, snipmate-snippets, engine sometimes behaves strange, supports
rewriting snippets on the fly (eg adding a second version with folding
markers)
MarcWeber/UltiSnips [6]:
python, snipmate-snippets and UltiSnips-snippets
SirVer/ultisnips [7]:
python, UltiSnips-snippets
github.com/Shougo/neosnippet [5]:
viml, has a compatible mode allowing to reuse most snipmate snippets ?
XPTemplate:
totally different syntax, does not read snippets contained in this file,
but it is also very powerful
... there are some more, but they have less features which is why I don't
mention them here
UltiSnips engine has additional features such as "nested snippets".
Which one to use? If you have python give MarcWeber/UltiSnips a try because its
fast and supports all important features. You can prefer the UltiSnip versions
of the snippets by setting the "always_use_first_snippet" option to 1.
If you have VimL only (vim without python support) your best option is using
garbas/vim-snipmate and cope with the minor bugs found in the engine.
Policies / for contributors
Some snippets are useful for almost all languages, so let's try to have the same
triggers for them:
if : if without else
ife: if $1 else $2
eif : else if ($1) { .. }
el : else ..
wh : while (cond) ...If you're not satisfied with these defaults, open a ticket that we implement
- Then you can remap "else" to "el" or the like.
Don't add stupid placeholder default texts like
if (${1:condition}){
${2:some code here}
}instead use:
if (${1}){
${2}
}Exception: Functions which are used less often, such as Vim's matchall(), matchstr()
functions which case hints may be helpful to remember order. In the VimL case
get vim-dev plugin which has function completion
Thus for conditions (while, if ..) and block bodies just use ${N} - Thanks
Open questions:
What about one line if ee then .. else .. vs if n .. then n ... n else n .. ?
Which additional policies to add?
Discuss at: https://github.com/honza/vim-snippets/issues/230
Related repositories
We also encourage people to maintain sets of snippets for particular use cases
so that all users can benefit from them. People can list their snippet repositories here:
* https://github.com/rbonvall/snipmate-snippets-bib (snippets for BibTeX files)
* https://github.com/sudar/vim-arduino-snippets (snippets for Arduino files)
* https://github.com/zedr/zope-snipmate-bundle.git (snippets for Python, TAL and ZCML)
* https://github.com/bonsaiben/bootstrap-snippets (snippets for Twitter Bootstrap markup, in HTML and Haml)
Installation using VAM: "github:rbonvall/snipmate-snippets-bib"
Future - ideas - examples
overview snippet engines
If you have ideas you can add them to that list of "snippet engine features by example".
Historical notes
vim-snipmate was originally started by Michael Sanders who has now
unfortunately abandoned the project. Rok Garbas is now maintaining a
fork of the project in hopes of improving the existing code base.
Versions / dialects / ..
There are some issues, such as newer language versions may require other
snippets than older. If this exists we currently recommend doing this:
add snippets/ruby.snippets (common snippets)
add snippets/ruby-1.8.snippets (1.8 only)
add snippets/ruby-1.9.snippets (1.9 only)
then configure github.com/garbas/vim-snipmate this way:
let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['ruby'] = 'ruby,ruby-rails,ruby-1.9'or github.com/MarcWeber/UltiSnips this way:
let g:UltiSnips = {}
let g:UltiSnips.snipmate_ft_filter = {
\ 'default' : {'filetypes': ["FILETYPE"] },
\ 'ruby' : {'filetypes': ["ruby", "ruby-rails", "ruby-1.9"] },If it happens that you work on a project requiring ruby-1.8 snippets instead,
consider using vim-addon-local-vimrc and override the filetypes.
Well - of course it may not make sense to create a new file for each
ruby-library-version triplet. Sometimes postfixing a name such as
migrate_lib_20_down
migrate_lib_20_up
will do it then if syntax has changed.
Language maintainers
No one can really be proficient in all programming languages. If you would like
to maintain snippets for a language, please get in touch.
Notes: People are interested in snippets - and their interest may stop again
at will. So its ok if people maintain a language only for a short period of
time - or jump in and get things done - don't let the flow stop :)
vim-snippets is not like the "linux kernel".
- Python - honza
- Javascript - honza
- HTML Django - honza
- Markdown - honza
- Ruby - taq
- PHP - chrisyue
- Scala - gorodinskiy
- Falcon - steveno
- Elixir - iurifq
Contributing notes
Until further work is done on vim-snipmate, please don't add folding markers
into snippets. vim-snipmate has some comments about how to patch all snippets
on the fly adding those.
Because MarcWeber/UltiSnips [6] supports also snipmate-snippets there is no
need to duplicate all snippets - only those snippets who use advanced UltiSnips
features should be duplicated in UltiSnips (?)
Currently all snippets from UltiSnips have been put into UltiSnips - some work
on merging should be done (dropping duplicates etc)
Authors
For a list of authors, please see the AUTHORS files.
License
Just as the original snipMate plugin, all the snippets are licensed under the
terms of the MIT license.