SlideShare a Scribd company logo
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!

More Related Content

What's hot

Puphpet
PuphpetPuphpet
Getting started with Ruby on Rails
Getting started with Ruby on RailsGetting started with Ruby on Rails
Getting started with Ruby on Rails
Ilias Bartolini
 
How to write patches for Vim
How to write patches for VimHow to write patches for Vim
How to write patches for Vim
k-takata
 
Let's use AppVeyor
Let's use AppVeyorLet's use AppVeyor
Let's use AppVeyor
k-takata
 
WebAssemlby vs JavaScript
WebAssemlby vs JavaScriptWebAssemlby vs JavaScript
WebAssemlby vs JavaScript
Alexandr Skachkov
 
Vagrant workshop 2015
Vagrant workshop 2015Vagrant workshop 2015
Vagrant workshop 2015
Haifa Ftirich
 
Async js
Async jsAsync js
Async js
lahin31
 
WebAssembly: In a Nutshell
WebAssembly: In a NutshellWebAssembly: In a Nutshell
WebAssembly: In a Nutshell
RangHo Lee
 
Full stack java script development
Full stack java script developmentFull stack java script development
Full stack java script development
Tomislav Capan
 
WebAssembly: A New World of Native Exploits on the Browser
WebAssembly: A New World of Native Exploits on the BrowserWebAssembly: A New World of Native Exploits on the Browser
WebAssembly: A New World of Native Exploits on the Browser
Priyanka Aash
 
NodeJs Intro - JavaScript Zagreb Meetup #1
NodeJs Intro - JavaScript Zagreb Meetup #1NodeJs Intro - JavaScript Zagreb Meetup #1
NodeJs Intro - JavaScript Zagreb Meetup #1
Tomislav Capan
 
Vagrantfordevops
VagrantfordevopsVagrantfordevops
Vagrantfordevops
Deepanshu Gajbhiye
 
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan HoracekOpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
NETWAYS
 
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
Martin Grotzke
 
GraalVMに入門してみた
GraalVMに入門してみたGraalVMに入門してみた
GraalVMに入門してみた
Aya Ebata
 
Rails Girls Resources
Rails Girls ResourcesRails Girls Resources
Rails Girls Resources
berlintam
 
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
Igalia
 
Rbenv
RbenvRbenv
Rbenv
kluminar
 
Compiling To Web Assembly
Compiling To Web AssemblyCompiling To Web Assembly
Compiling To Web Assembly
Igalia
 
Contributing to ansible
Contributing  to ansibleContributing  to ansible
Contributing to ansible
hellodk
 

What's hot (20)

Puphpet
PuphpetPuphpet
Puphpet
 
Getting started with Ruby on Rails
Getting started with Ruby on RailsGetting started with Ruby on Rails
Getting started with Ruby on Rails
 
How to write patches for Vim
How to write patches for VimHow to write patches for Vim
How to write patches for Vim
 
Let's use AppVeyor
Let's use AppVeyorLet's use AppVeyor
Let's use AppVeyor
 
WebAssemlby vs JavaScript
WebAssemlby vs JavaScriptWebAssemlby vs JavaScript
WebAssemlby vs JavaScript
 
Vagrant workshop 2015
Vagrant workshop 2015Vagrant workshop 2015
Vagrant workshop 2015
 
Async js
Async jsAsync js
Async js
 
WebAssembly: In a Nutshell
WebAssembly: In a NutshellWebAssembly: In a Nutshell
WebAssembly: In a Nutshell
 
Full stack java script development
Full stack java script developmentFull stack java script development
Full stack java script development
 
WebAssembly: A New World of Native Exploits on the Browser
WebAssembly: A New World of Native Exploits on the BrowserWebAssembly: A New World of Native Exploits on the Browser
WebAssembly: A New World of Native Exploits on the Browser
 
NodeJs Intro - JavaScript Zagreb Meetup #1
NodeJs Intro - JavaScript Zagreb Meetup #1NodeJs Intro - JavaScript Zagreb Meetup #1
NodeJs Intro - JavaScript Zagreb Meetup #1
 
Vagrantfordevops
VagrantfordevopsVagrantfordevops
Vagrantfordevops
 
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan HoracekOpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
 
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
 
GraalVMに入門してみた
GraalVMに入門してみたGraalVMに入門してみた
GraalVMに入門してみた
 
Rails Girls Resources
Rails Girls ResourcesRails Girls Resources
Rails Girls Resources
 
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
 
Rbenv
RbenvRbenv
Rbenv
 
Compiling To Web Assembly
Compiling To Web AssemblyCompiling To Web Assembly
Compiling To Web Assembly
 
Contributing to ansible
Contributing  to ansibleContributing  to ansible
Contributing to ansible
 

Similar to Neosnippet.vim + Deoppet.nvim in Vim conf 2017

Useful Vim Plugins
Useful Vim PluginsUseful Vim Plugins
Useful Vim Plugins
anveo
 
Vim and Python
Vim and PythonVim and Python
Vim and Python
Python Ireland
 
Git for work groups ironhack talk
Git for work groups ironhack talkGit for work groups ironhack talk
Git for work groups ironhack talk
Tiago Ameller
 
Continuous Deployment Applied at MyHeritage
Continuous Deployment Applied at MyHeritageContinuous Deployment Applied at MyHeritage
Continuous Deployment Applied at MyHeritage
Ran Levy
 
Puppet managed loadays
Puppet managed loadaysPuppet managed loadays
Puppet managed loadays
loadays
 
Git Basics
Git BasicsGit Basics
Git Basics
Ryan Condron
 
Headless Android at AnDevCon3
Headless Android at AnDevCon3Headless Android at AnDevCon3
Headless Android at AnDevCon3
Opersys inc.
 
Last Month in PHP - June 2016
Last Month in PHP - June 2016Last Month in PHP - June 2016
Last Month in PHP - June 2016
Eric Poe
 
How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?
Vivek Parihar
 
Swoole Meetup AFUP¨Montpellier 27/01/2021
Swoole   Meetup  AFUP¨Montpellier 27/01/2021Swoole   Meetup  AFUP¨Montpellier 27/01/2021
Swoole Meetup AFUP¨Montpellier 27/01/2021
Julien Vinber
 
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Gavin Pickin
 
Take Home Your Very Own Free Vagrant CFML Dev Environment
Take Home Your Very Own Free Vagrant CFML Dev Environment Take Home Your Very Own Free Vagrant CFML Dev Environment
Take Home Your Very Own Free Vagrant CFML Dev Environment
ColdFusionConference
 
Git sourcecontrolpreso
Git sourcecontrolpresoGit sourcecontrolpreso
Git sourcecontrolpreso
ColdFusionConference
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UI
Opersys inc.
 
Kick my mouse away
Kick my mouse awayKick my mouse away
Kick my mouse away
Xatierlike Lee
 
Volunteering at YouSee on Technology Support
Volunteering at YouSee on Technology SupportVolunteering at YouSee on Technology Support
Volunteering at YouSee on Technology Support
YouSee
 
Drupalhagen 2014 kiss omg ftw
Drupalhagen 2014   kiss omg ftwDrupalhagen 2014   kiss omg ftw
Drupalhagen 2014 kiss omg ftw
Arne Jørgensen
 
git-flow R3Labs
git-flow R3Labsgit-flow R3Labs
git-flow R3Labs
Raül Pérez
 
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Ohad Basan
 
Creating a Mature Puppet System
Creating a Mature Puppet SystemCreating a Mature Puppet System
Creating a Mature Puppet System
Puppet
 

Similar to Neosnippet.vim + Deoppet.nvim in Vim conf 2017 (20)

Useful Vim Plugins
Useful Vim PluginsUseful Vim Plugins
Useful Vim Plugins
 
Vim and Python
Vim and PythonVim and Python
Vim and Python
 
Git for work groups ironhack talk
Git for work groups ironhack talkGit for work groups ironhack talk
Git for work groups ironhack talk
 
Continuous Deployment Applied at MyHeritage
Continuous Deployment Applied at MyHeritageContinuous Deployment Applied at MyHeritage
Continuous Deployment Applied at MyHeritage
 
Puppet managed loadays
Puppet managed loadaysPuppet managed loadays
Puppet managed loadays
 
Git Basics
Git BasicsGit Basics
Git Basics
 
Headless Android at AnDevCon3
Headless Android at AnDevCon3Headless Android at AnDevCon3
Headless Android at AnDevCon3
 
Last Month in PHP - June 2016
Last Month in PHP - June 2016Last Month in PHP - June 2016
Last Month in PHP - June 2016
 
How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?
 
Swoole Meetup AFUP¨Montpellier 27/01/2021
Swoole   Meetup  AFUP¨Montpellier 27/01/2021Swoole   Meetup  AFUP¨Montpellier 27/01/2021
Swoole Meetup AFUP¨Montpellier 27/01/2021
 
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
 
Take Home Your Very Own Free Vagrant CFML Dev Environment
Take Home Your Very Own Free Vagrant CFML Dev Environment Take Home Your Very Own Free Vagrant CFML Dev Environment
Take Home Your Very Own Free Vagrant CFML Dev Environment
 
Git sourcecontrolpreso
Git sourcecontrolpresoGit sourcecontrolpreso
Git sourcecontrolpreso
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UI
 
Kick my mouse away
Kick my mouse awayKick my mouse away
Kick my mouse away
 
Volunteering at YouSee on Technology Support
Volunteering at YouSee on Technology SupportVolunteering at YouSee on Technology Support
Volunteering at YouSee on Technology Support
 
Drupalhagen 2014 kiss omg ftw
Drupalhagen 2014   kiss omg ftwDrupalhagen 2014   kiss omg ftw
Drupalhagen 2014 kiss omg ftw
 
git-flow R3Labs
git-flow R3Labsgit-flow R3Labs
git-flow R3Labs
 
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
 
Creating a Mature Puppet System
Creating a Mature Puppet SystemCreating a Mature Puppet System
Creating a Mature Puppet System
 

More from Shougo

カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
Shougo
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
Shougo
 
neovim = VM
neovim = VMneovim = VM
neovim = VM
Shougo
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
Shougo
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
Shougo
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
Shougo
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacsShougo
 
Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境
Shougo
 
Unite vim
Unite vim Unite vim
Unite vim
Shougo
 
Vim = VM
Vim = VMVim = VM
Vim = VMShougo
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
Shougo
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vim
Shougo
 

More from Shougo (12)

カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
 
neovim = VM
neovim = VMneovim = VM
neovim = VM
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
 
Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境
 
Unite vim
Unite vim Unite vim
Unite vim
 
Vim = VM
Vim = VMVim = VM
Vim = VM
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vim
 

Recently uploaded

Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
Ayan Halder
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Envertis Software Solutions
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 

Recently uploaded (20)

Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 

Neosnippet.vim + Deoppet.nvim in Vim conf 2017

  • 2. 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!
  • 3. 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)
  • 4. Today's theme ● The snippet plugins ● neosnippet.vim ● deoppet.nvim ● The extra thing Note:No songs
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 13. 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
  • 14. 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…
  • 16. 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
  • 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 of deoppet.nvim
  • 22. The extra thing ● neocomplete.vim development is over ● Because deoplete.nvim supports Vim8 ● You can try it ● Enjoy!