{"id":13442402,"url":"https://github.com/SirVer/ultisnips","last_synced_at":"2025-03-20T13:33:32.057Z","repository":{"id":2130148,"uuid":"3073296","full_name":"SirVer/ultisnips","owner":"SirVer","description":"UltiSnips - The ultimate snippet solution for Vim. Send pull requests to SirVer/ultisnips!","archived":false,"fork":false,"pushed_at":"2025-03-09T19:54:49.000Z","size":7049,"stargazers_count":7597,"open_issues_count":115,"forks_count":689,"subscribers_count":85,"default_branch":"master","last_synced_at":"2025-03-19T14:14:38.045Z","etag":null,"topics":["plugin","snippets","ultisnips","vim"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SirVer.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"COPYING.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"SirVer"}},"created_at":"2011-12-30T07:07:24.000Z","updated_at":"2025-03-19T12:50:04.000Z","dependencies_parsed_at":"2024-03-15T20:43:43.619Z","dependency_job_id":null,"html_url":"https://github.com/SirVer/ultisnips","commit_stats":{"total_commits":1365,"total_committers":193,"mean_commits":7.072538860103627,"dds":0.5868131868131868,"last_synced_commit":"49dc8cb2086db19d385791c8e1635723b0fd95c7"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SirVer%2Fultisnips","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SirVer%2Fultisnips/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SirVer%2Fultisnips/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SirVer%2Fultisnips/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SirVer","download_url":"https://codeload.github.com/SirVer/ultisnips/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244465676,"owners_count":20457274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["plugin","snippets","ultisnips","vim"],"created_at":"2024-07-31T03:01:45.291Z","updated_at":"2025-03-20T13:33:32.032Z","avatar_url":"https://github.com/SirVer.png","language":"Python","readme":"![Build Status](https://github.com/SirVer/ultisnips/actions/workflows/main.yml/badge.svg)\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/SirVer/ultisnips?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\nUltiSnips\n=========\n\nUltiSnips is the ultimate solution for snippets in Vim. It has many features,\nspeed being one of them.\n\n![GIF Demo](https://raw.github.com/SirVer/ultisnips/master/doc/demo.gif)\n\nIn this demo I am editing a python file. I first expand the `#!` snippet, then\nthe `class` snippet. The completion menu comes from\n[YouCompleteMe](https://github.com/Valloric/YouCompleteMe), UltiSnips also\nintegrates with [deoplete](https://github.com/Shougo/deoplete.nvim),\n[vim-easycomplete](https://github.com/jayli/vim-easycomplete) and more. I can\njump through placeholders and add text while the snippet inserts text in other\nplaces automatically: when I add `Animal` as a base class, `__init__` gets\nupdated to call the base class constructor. When I add arguments to the\nconstructor, they automatically get assigned to instance variables. I then\ninsert my personal snippet for `print` debugging. Note that I left insert mode,\ninserted another snippet and went back to add an additional argument to\n`__init__` and the class snippet was still active and added another instance\nvariable.\n\nThe official home of UltiSnips is at \u003chttps://github.com/sirver/ultisnips\u003e.\nPlease add pull requests and issues there.\n\nUltiSnips was started in Jun 2009 by @SirVer. In Dec 2015, maintenance was\nhanded over to [@seletskiy](https://github.com/seletskiy) who ran out of time\nin early 2017. Since Jun 2019, @SirVer is maintaining UltiSnips again on a\nvery constraint time budget. If you can help triaging issues it would be\ngreatly appreciated.\n\n\nQuick Start\n-----------\n\nThis assumes you are using [Vundle](https://github.com/gmarik/Vundle.vim). Adapt\nfor your plugin manager of choice. Put this into your `.vimrc`.\n\n    \" Track the engine.\n    Plugin 'SirVer/ultisnips'\n\n    \" Snippets are separated from the engine. Add this if you want them:\n    Plugin 'honza/vim-snippets'\n\n    \" Trigger configuration. You need to change this to something other than \u003ctab\u003e if you use one of the following:\n    \" - https://github.com/Valloric/YouCompleteMe\n    \" - https://github.com/nvim-lua/completion-nvim\n    let g:UltiSnipsExpandTrigger=\"\u003ctab\u003e\"\n    let g:UltiSnipsJumpForwardTrigger=\"\u003cc-b\u003e\"\n    let g:UltiSnipsJumpBackwardTrigger=\"\u003cc-z\u003e\"\n\n    \" If you want :UltiSnipsEdit to split your window.\n    let g:UltiSnipsEditSplit=\"vertical\"\n\nUltiSnips comes with comprehensive\n[documentation](https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt).\nAs there are more options and tons of features I suggest you at least skim it.\n\nThere are example uses for some power user features here:\n\n  * [Snippets Aliases](doc/examples/snippets-aliasing/README.md)\n  * [Dynamic Tabstops/Tabstop Generation](doc/examples/tabstop-generation/README.md)\n\nScreencasts\n-----------\n\nFrom a gentle introduction to really advanced in a few minutes: The blog posts\nof the screencasts contain more advanced examples of the things discussed in the\nvideos.\n\n- [Episode 1: What are snippets and do I need them?](http://www.sirver.net/blog/2011/12/30/first-episode-of-ultisnips-screencast/)\n- [Episode 2: Creating Basic Snippets](http://www.sirver.net/blog/2012/01/08/second-episode-of-ultisnips-screencast/)\n- [Episode 3: What's new in version 2.0](http://www.sirver.net/blog/2012/02/05/third-episode-of-ultisnips-screencast/)\n- [Episode 4: Python Interpolation](http://www.sirver.net/blog/2012/03/31/fourth-episode-of-ultisnips-screencast/)\n\nAlso the excellent [Vimcasts](http://vimcasts.org) dedicated three episodes to\nUltiSnips:\n\n- [Meet UltiSnips](http://vimcasts.org/episodes/meet-ultisnips/)\n- [Using Python interpolation in UltiSnips snippets](http://vimcasts.org/episodes/ultisnips-python-interpolation/)\n- [Using selected text in UltiSnips snippets](http://vimcasts.org/episodes/ultisnips-visual-placeholder/)\n","funding_links":["https://github.com/sponsors/SirVer"],"categories":["Tutorial","Python","Vim","vim"],"sub_categories":["Windows Manager","Plugins"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSirVer%2Fultisnips","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSirVer%2Fultisnips","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSirVer%2Fultisnips/lists"}