Neosnippet.vim +
Deoppet.nvim
VimConf 2017
Shougo
@ShougoMatsu
Profile
● Shougo
● The dark powered Vim user 暗黒美無王
(Uncock Vim Awe, The dark Vim maestro)
● The text editor is the world
● My icon is not zebra!
The dark powered plugins
● deoplete.nvim: The next completion plugin for neovim
● deol.nvim: The next terminal plugin for neovim/Vim8
● dein.vim: The next plugin manager for neovim/Vim8
● denite.nvim: The next UI plugin for neovim/Vim8
● deoppet.nvim: The next snippet plugin for neovim (vaporware)
● defx.nvim: The next file manager for neovim/Vim8 (vaporware)
● deorise.nvim: The next hexadecimal editor plugin for neovim/Vim8
(vaporware)
Today's theme
● The snippet plugins
● neosnippet.vim
● deoppet.nvim
● The extra thing
Note:No songs
The snippet plugins
What is the snippet plugin?
● It expands the snippet trigger
Ex: if → if () {}
● And jumps the next places(place holder)
Ex: if (${1}) { ${2} }
● You don’t have to insert the texts and move to the next
position manually
● The similar plugins: The template plugin, emmet-vim
neosnippet.vim
https://github.com/Shougo/neosnippet.vim
● The neo-snippet plugin
● The marker type snippet plugin
● Popular in Japan
● Compatible with snipMate syntax
● Integrated with the completion plugins
● Vim script based
snipMate
https://github.com/garbas/vim-snipmate
● Easy to read syntax
● Very popular
● The development seems slowly
● The non-marker type snippet plugin
● Vim script based
UltiSnips
https://github.com/Silver/ultisnips
● Non compatible syntax with snipMate
● Popular
● Many features
● The non-marker type snippet plugin
● if_python/if_python3 based
● Slow performance in neovim
What is the marker type snippet plugin?
● It adds the markers to the buffer to detect the next jump
places
Ex: <`1`>
● It is easy to implement
● No performance problem
● Easy to find the next jump places
What is the non marker type snippet
plugin?
● It monitors the buffer changes to find the next jump
position
● The implementation is complex
● It is easy to implement jump back feature
Neosnippet.vim
The history of neosnippet.vim
● I don't understand why the snippet plugins are useful
● I have created the snippet plugin as builtin
neocomplcache source
● The snippet plugin is very huge... → neosnippet.vim
● The default snippets are very huge and not easy to
customize for the users → neosnippet-snippets
neosnippet.vim disadvantages
● Conflicts with conceal feature
● Hard to implement jump back feature
● It changes the buffer
● The slow parser (Vim script performance problem)
● It is hard to extend…
Deoppet.nvim
deoppet.nvim
https://github.com/Shougo/deoppet.nvim
● The dark powered neo snippet plugin
● Compatible syntax with neosnippet.vim
● The non-marker type snippet plugin
● It depends on Extended Marks feature in neovim
https://github.com/neovim/neovim/pull/5031
● neovim only
● Python3 based, almost 300 lines
Extended marks feature
● It detects the buffer changes automatically
● The plugins don’t have to detect the buffer changes
● And it has the namespaces
let ns = nvim_init_mark_ns(‘deoppet’)
let id = nvim_buf_set_marks(bufnr, ns, ‘’, row, col)
Current development status
● Works the simple neosnippet syntax parser
● Can expand the snippet trigger
● The Completion by deoplete
● Can Jump forward/jump back to the placeholders
● It is hard to try...
Current development status
● Works the simple neosnippet syntax parser
● Can expand the snippet trigger
● The Completion by deoplete
● Can Jump forward/jump back to the placeholders
● It is hard to try...
The demo of deoppet.nvim
The extra thing
The extra thing
● neocomplete.vim development is over
● Because deoplete.nvim supports Vim8
● You can try it
● Enjoy!
Thank you!

Neosnippet.vim + Deoppet.nvim in Vim conf 2017

  • 1.
  • 2.
    Profile ● Shougo ● Thedark powered Vim user 暗黒美無王 (Uncock Vim Awe, The dark Vim maestro) ● The text editor is the world ● My icon is not zebra!
  • 3.
    The dark poweredplugins ● deoplete.nvim: The next completion plugin for neovim ● deol.nvim: The next terminal plugin for neovim/Vim8 ● dein.vim: The next plugin manager for neovim/Vim8 ● denite.nvim: The next UI plugin for neovim/Vim8 ● deoppet.nvim: The next snippet plugin for neovim (vaporware) ● defx.nvim: The next file manager for neovim/Vim8 (vaporware) ● deorise.nvim: The next hexadecimal editor plugin for neovim/Vim8 (vaporware)
  • 4.
    Today's theme ● Thesnippet plugins ● neosnippet.vim ● deoppet.nvim ● The extra thing Note:No songs
  • 5.
  • 6.
    What is thesnippet plugin? ● It expands the snippet trigger Ex: if → if () {} ● And jumps the next places(place holder) Ex: if (${1}) { ${2} } ● You don’t have to insert the texts and move to the next position manually ● The similar plugins: The template plugin, emmet-vim
  • 7.
    neosnippet.vim https://github.com/Shougo/neosnippet.vim ● The neo-snippetplugin ● The marker type snippet plugin ● Popular in Japan ● Compatible with snipMate syntax ● Integrated with the completion plugins ● Vim script based
  • 8.
    snipMate https://github.com/garbas/vim-snipmate ● Easy toread syntax ● Very popular ● The development seems slowly ● The non-marker type snippet plugin ● Vim script based
  • 9.
    UltiSnips https://github.com/Silver/ultisnips ● Non compatiblesyntax with snipMate ● Popular ● Many features ● The non-marker type snippet plugin ● if_python/if_python3 based ● Slow performance in neovim
  • 10.
    What is themarker type snippet plugin? ● It adds the markers to the buffer to detect the next jump places Ex: <`1`> ● It is easy to implement ● No performance problem ● Easy to find the next jump places
  • 11.
    What is thenon marker type snippet plugin? ● It monitors the buffer changes to find the next jump position ● The implementation is complex ● It is easy to implement jump back feature
  • 12.
  • 13.
    The history ofneosnippet.vim ● I don't understand why the snippet plugins are useful ● I have created the snippet plugin as builtin neocomplcache source ● The snippet plugin is very huge... → neosnippet.vim ● The default snippets are very huge and not easy to customize for the users → neosnippet-snippets
  • 14.
    neosnippet.vim disadvantages ● Conflictswith conceal feature ● Hard to implement jump back feature ● It changes the buffer ● The slow parser (Vim script performance problem) ● It is hard to extend…
  • 15.
  • 16.
    deoppet.nvim https://github.com/Shougo/deoppet.nvim ● The darkpowered neo snippet plugin ● Compatible syntax with neosnippet.vim ● The non-marker type snippet plugin ● It depends on Extended Marks feature in neovim https://github.com/neovim/neovim/pull/5031 ● neovim only ● Python3 based, almost 300 lines
  • 17.
    Extended marks feature ●It detects the buffer changes automatically ● The plugins don’t have to detect the buffer changes ● And it has the namespaces let ns = nvim_init_mark_ns(‘deoppet’) let id = nvim_buf_set_marks(bufnr, ns, ‘’, row, col)
  • 18.
    Current development status ●Works the simple neosnippet syntax parser ● Can expand the snippet trigger ● The Completion by deoplete ● Can Jump forward/jump back to the placeholders ● It is hard to try...
  • 19.
    Current development status ●Works the simple neosnippet syntax parser ● Can expand the snippet trigger ● The Completion by deoplete ● Can Jump forward/jump back to the placeholders ● It is hard to try...
  • 20.
    The demo ofdeoppet.nvim
  • 21.
  • 22.
    The extra thing ●neocomplete.vim development is over ● Because deoplete.nvim supports Vim8 ● You can try it ● Enjoy!
  • 23.