SlideShare a Scribd company logo
1 of 52
Download to read offline
My dark plugins development
history ~ over 10 years ~
Shougo
2
"My presentation may
be the last.
So I need to speak the
development history."
Note
3
Profile
●
Shougo= 暗黒美無王
●
“Dark Vim Master”
(pronounciation: Uncock Vim Awe)
●
Text editor is the world
=
4
VimConf 2019’s theme
●
“How to be more productive with
Vim?”
5
“more productive with Vim” is ...
●
To develop dark plugins is my
productive method!
6
My theme is ...
●
My dark plugins development
history over 10 years
●
“Why does Shougo discard Vim
script and choose Python3
instead?”
7
What is “dark plugins”?(1)
●
I want to do everything in
Vim(neovim) like Emacs
●
It is not allowed by “:help design-
not” in Vim
8
What is “dark plugins”?(2)
●
It is not the light way to use Vim
●
I have defined it as the dark way
My plugins are
dark powered!
9
Zero generation plugins
●
Autocomplpop.vim(acp.vim)
●
FuzzyFinder.vim(fzf.vim)
●
Shell.vim
10
Why did I use the plugins?
●
I used IDEs in Windows
●
I wanted to use IDE features
11
Why did I quit to use zero
generation plugins?
●
The plugins are not customizable
fully
●
Does not exist plugins for me
●
I can create the plugins!
12
1st
generation plugins
●
vimshell.vim (2009)
●
neocomplcache.vim (2009)
●
neosnippet.vim (2012)
13
Vimshell.vim
14
Neocomplcache.vim
15
Neosnippet.vim
16
1st
generation features
●
Custimizable
●
Many functions
●
Pluggable
17
2nd
generation plugins
●
unite.vim (2010)
●
vimfiler.vim (2010)
●
neobundle.vim (2011)
●
neocomplete.vim (2013)
18
2nd
generation features
●
Use if_lua
●
Plugins combination
19
I choosed if_lua because...
Vim script is
too Slow!!!
20
Plugins combination examples
●
Unite.vim + vimfiler.vim
●
Neocomplete.vim +
neosnippet.vim
●
Unite.vim + neobundle.vim
21
3rd
generation plugins
●
deoplete.nvim (2015)
●
denite.nvim (2016)
●
deol.nvim (2016)
●
dein.vim (2015)
22
3rd
generation features
●
Use Vim8/neovim features
●
Use Python3 instead
●
Asynchronous
23
Use Vim8/neovim features
●
:terminal
●
Job APIs
●
Remote plugins
●
winid
●
And more…
●
No more Vim 7!
24
I have chosen Python3 because...
Vim script is
too Slow!!!
25
Python3 vs if_lua
90% 10%
if_lua
Python3
26
For example:
slow!
27
4th
generation plugins
●
deoplete.nvim (2019, ver. 5.1~)
●
denite.nvim (2019, ver. 3.0~)
●
deoppet.nvim (2017)
●
defx.nvim (2018)
28
4th
generation features
●
Type definitions
●
Non default key-mappings
●
Remove configuration variables
mappings variables
29
Why is type definition important?
●
It can detect some bugs
●
Detect bugs is important
30
Why non default key-mappings?(1)
https://github.com/Shougo/
defx.nvim/issues/5
31
Why non default key-mappings?(2)
●
No best default key mappings
●
Hard to define defaults
●
Conflict with other plugins/config
Default mappings
are not needed!
32
Why I have removed configuration
variables?
●
Functions can keep interfaces in
multiple plugins
●
Example:
call defx#custom#option('_', {})
call denite#custom#option('_', {})
33
Let’s create your plugins!
●
This is just my history.
●
You can choose other selection!
34
Your Vim is your text editor!
The extra: denite.nvim version 3
Shougo
36
Denite.nvim big changes
●
Many issues are reported after
upgrade
37
Denite.nvim version 2
●
Steal your input
●
Define original mappings
●
Similar to ctrlp.vim
38
Denite.nvim version 2
Prompt
39
Prompt UI’s disadvantages
●
Ignore user’s configuration
●
Hard to work asynchronously
●
Cannot combine with other
plugins
●
They fit with my policy???
40
My plugin development policy
●
Customizable
●
Combine with other plugins
●
Asynchronous if possible
41
Denite.nvim version 3
●
Replace prompt.nvim to normal
buffer
●
Edit buffer instead of command
line
42
Denite.nvim version 3
Normal buffer
Edit buffer
43
New UI advantages
●
Use user’s configuration
●
Easy to work asynchronously
●
Can combine with other plugins
●
The features fit with my policy!
44
Denite.nvim version 3 Demo
The extra2: My development note
Shougo
46
My development style
●
https://employmen
t.en-japan.com/en
gineerhub/entry/2
018/08/28/110000
47
I don’t use memo plugins!
●
Memolist.vim
●
QfixHowm
●
Vimwiki
●
…
48
I use paper note for development
●
Here
49
I use the paper note for...
●
(Finished)task list
●
Technology notes
●
Survey for issues
50
Why do I use paper note?
●
Not needed PC!
●
Free style
51
The note is the strongest Vim for me!
●
Thank you!
52
End
●
Any questions?

More Related Content

What's hot

The State of PHP 2014 - Portsmouth Linux User Group (6th June 2014)
The State of PHP 2014 - Portsmouth Linux User Group (6th June 2014)The State of PHP 2014 - Portsmouth Linux User Group (6th June 2014)
The State of PHP 2014 - Portsmouth Linux User Group (6th June 2014)
James Titcumb
 
Playing with virtual machine
Playing with virtual machinePlaying with virtual machine
Playing with virtual machine
Hieu Van
 

What's hot (20)

Getting started with Ruby on Rails
Getting started with Ruby on RailsGetting started with Ruby on Rails
Getting started with Ruby on Rails
 
GraalVMに入門してみた
GraalVMに入門してみたGraalVMに入門してみた
GraalVMに入門してみた
 
JavaScript Tools and Implementation
JavaScript Tools and ImplementationJavaScript Tools and Implementation
JavaScript Tools and Implementation
 
Selenium camp v1
Selenium camp v1Selenium camp v1
Selenium camp v1
 
Rails Girls Resources
Rails Girls ResourcesRails Girls Resources
Rails Girls Resources
 
Typescript - MentorMate Academy
Typescript - MentorMate AcademyTypescript - MentorMate Academy
Typescript - MentorMate Academy
 
Testing tdd jasmine
Testing tdd jasmineTesting tdd jasmine
Testing tdd jasmine
 
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...
 
Async js
Async jsAsync js
Async js
 
Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?
 
The State of PHP 2014 - Portsmouth Linux User Group (6th June 2014)
The State of PHP 2014 - Portsmouth Linux User Group (6th June 2014)The State of PHP 2014 - Portsmouth Linux User Group (6th June 2014)
The State of PHP 2014 - Portsmouth Linux User Group (6th June 2014)
 
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
 
Contributing to ansible
Contributing  to ansibleContributing  to ansible
Contributing to ansible
 
Last Month in PHP - June 2016
Last Month in PHP - June 2016Last Month in PHP - June 2016
Last Month in PHP - June 2016
 
Stop Sucking at Building Stuff!
Stop Sucking at Building Stuff!Stop Sucking at Building Stuff!
Stop Sucking at Building Stuff!
 
Frameworks
FrameworksFrameworks
Frameworks
 
Playing with virtual machine
Playing with virtual machinePlaying with virtual machine
Playing with virtual machine
 
Alexander Kutsan "Where Unicorns Live or How To Write Good C++ Code"
Alexander Kutsan "Where Unicorns Live or How To Write Good C++ Code"Alexander Kutsan "Where Unicorns Live or How To Write Good C++ Code"
Alexander Kutsan "Where Unicorns Live or How To Write Good C++ Code"
 
Development: What they don't teach you in college
Development: What they don't teach you in collegeDevelopment: What they don't teach you in college
Development: What they don't teach you in college
 
PyJS intro
PyJS introPyJS intro
PyJS intro
 

Similar to Vim conf2019

Top Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To KnowTop Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To Know
Kathy Brown
 
CI and other tools for feature branch development
CI and other tools for feature branch developmentCI and other tools for feature branch development
CI and other tools for feature branch development
Yuriy Gerasimov
 
Safer’s Tips & Tricks to Optimize Top FME Transformers
Safer’s Tips & Tricks to Optimize Top FME TransformersSafer’s Tips & Tricks to Optimize Top FME Transformers
Safer’s Tips & Tricks to Optimize Top FME Transformers
Safe Software
 

Similar to Vim conf2019 (20)

Vim and Python
Vim and PythonVim and Python
Vim and Python
 
Using FXML on Clojure
Using FXML on ClojureUsing FXML on Clojure
Using FXML on Clojure
 
Pentester++
Pentester++Pentester++
Pentester++
 
Test Driven Development with PHP
Test Driven Development with PHPTest Driven Development with PHP
Test Driven Development with PHP
 
Headless Android
Headless AndroidHeadless Android
Headless Android
 
Top Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To KnowTop Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To Know
 
AOT-compilation of JavaScript with V8
AOT-compilation of JavaScript with V8AOT-compilation of JavaScript with V8
AOT-compilation of JavaScript with V8
 
Nimble - iOS dependency management
Nimble - iOS dependency managementNimble - iOS dependency management
Nimble - iOS dependency management
 
TDD in Python With Pytest
TDD in Python With PytestTDD in Python With Pytest
TDD in Python With Pytest
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UI
 
Headless Android at AnDevCon3
Headless Android at AnDevCon3Headless Android at AnDevCon3
Headless Android at AnDevCon3
 
Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013
 
CI and other tools for feature branch development
CI and other tools for feature branch developmentCI and other tools for feature branch development
CI and other tools for feature branch development
 
Xdebug for Beginners
Xdebug for BeginnersXdebug for Beginners
Xdebug for Beginners
 
Instant LAMP Stack with Vagrant and Puppet
Instant LAMP Stack with Vagrant and PuppetInstant LAMP Stack with Vagrant and Puppet
Instant LAMP Stack with Vagrant and Puppet
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
Go Is Your Next Language — Sergii Shapoval
Go Is Your Next Language — Sergii ShapovalGo Is Your Next Language — Sergii Shapoval
Go Is Your Next Language — Sergii Shapoval
 
Messing with binary formats
Messing with binary formatsMessing with binary formats
Messing with binary formats
 
Safer’s Tips & Tricks to Optimize Top FME Transformers
Safer’s Tips & Tricks to Optimize Top FME TransformersSafer’s Tips & Tricks to Optimize Top FME Transformers
Safer’s Tips & Tricks to Optimize Top FME Transformers
 
Griffon demo
Griffon demoGriffon demo
Griffon demo
 

More from Shougo

Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
Shougo
 
Vim = VM
Vim = VMVim = VM
Vim = VM
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

%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 

Recently uploaded (20)

%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

Vim conf2019