SlideShare a Scribd company logo
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 (20)

PDF
Getting started with Ruby on Rails
Ilias Bartolini
 
PDF
GraalVMに入門してみた
Aya Ebata
 
PPT
JavaScript Tools and Implementation
Charles Russell
 
PDF
Selenium camp v1
dimakovalenko
 
PDF
Rails Girls Resources
berlintam
 
PDF
Typescript - MentorMate Academy
Dimitar Danailov
 
PDF
Testing tdd jasmine
Philipp Fehre
 
ODP
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
Martin Grotzke
 
PPTX
Async js
lahin31
 
PDF
Why don't you Groovy?
Orest Ivasiv
 
PDF
The State of PHP 2014 - Portsmouth Linux User Group (6th June 2014)
James Titcumb
 
PDF
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Develcz
 
ODP
Contributing to ansible
hellodk
 
PDF
Last Month in PHP - June 2016
Eric Poe
 
PDF
Stop Sucking at Building Stuff!
Puppet
 
PDF
Frameworks
Binny V A
 
PDF
Playing with virtual machine
Hieu Van
 
PDF
Alexander Kutsan "Where Unicorns Live or How To Write Good C++ Code"
LogeekNightUkraine
 
PDF
Development: What they don't teach you in college
Binny V A
 
PDF
PyJS intro
Demix
 
Getting started with Ruby on Rails
Ilias Bartolini
 
GraalVMに入門してみた
Aya Ebata
 
JavaScript Tools and Implementation
Charles Russell
 
Selenium camp v1
dimakovalenko
 
Rails Girls Resources
berlintam
 
Typescript - MentorMate Academy
Dimitar Danailov
 
Testing tdd jasmine
Philipp Fehre
 
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
Martin Grotzke
 
Async js
lahin31
 
Why don't you Groovy?
Orest Ivasiv
 
The State of PHP 2014 - Portsmouth Linux User Group (6th June 2014)
James Titcumb
 
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Develcz
 
Contributing to ansible
hellodk
 
Last Month in PHP - June 2016
Eric Poe
 
Stop Sucking at Building Stuff!
Puppet
 
Frameworks
Binny V A
 
Playing with virtual machine
Hieu Van
 
Alexander Kutsan "Where Unicorns Live or How To Write Good C++ Code"
LogeekNightUkraine
 
Development: What they don't teach you in college
Binny V A
 
PyJS intro
Demix
 

Similar to Vim conf2019 (20)

PDF
Vim and Python
Python Ireland
 
PPTX
Using FXML on Clojure
EunPyoung Kim
 
PDF
Pentester++
CTruncer
 
PDF
Test Driven Development with PHP
Rogério Vicente
 
PDF
Headless Android
Opersys inc.
 
PDF
Top Tips Every Notes Developer Needs To Know
Kathy Brown
 
PDF
Nimble - iOS dependency management
Nimble
 
PDF
TDD in Python With Pytest
Eddy Reyes
 
PDF
Inside Android's UI
Opersys inc.
 
PDF
Headless Android at AnDevCon3
Opersys inc.
 
PDF
Inside Android's UI / ABS 2013
Opersys inc.
 
ODP
CI and other tools for feature branch development
Yuriy Gerasimov
 
ODP
Xdebug for Beginners
Sean Prunka
 
PDF
Instant LAMP Stack with Vagrant and Puppet
Patrick Lee
 
PDF
Coding dojo
Rafael Rosa
 
PPTX
Go Is Your Next Language — Sergii Shapoval
GlobalLogic Ukraine
 
PDF
Messing with binary formats
Ange Albertini
 
PDF
Safer’s Tips & Tricks to Optimize Top FME Transformers
Safe Software
 
PDF
Griffon demo
James Kirkbride
 
PDF
Your first 5 PHP design patterns - ThatConference 2012
Aaron Saray
 
Vim and Python
Python Ireland
 
Using FXML on Clojure
EunPyoung Kim
 
Pentester++
CTruncer
 
Test Driven Development with PHP
Rogério Vicente
 
Headless Android
Opersys inc.
 
Top Tips Every Notes Developer Needs To Know
Kathy Brown
 
Nimble - iOS dependency management
Nimble
 
TDD in Python With Pytest
Eddy Reyes
 
Inside Android's UI
Opersys inc.
 
Headless Android at AnDevCon3
Opersys inc.
 
Inside Android's UI / ABS 2013
Opersys inc.
 
CI and other tools for feature branch development
Yuriy Gerasimov
 
Xdebug for Beginners
Sean Prunka
 
Instant LAMP Stack with Vagrant and Puppet
Patrick Lee
 
Coding dojo
Rafael Rosa
 
Go Is Your Next Language — Sergii Shapoval
GlobalLogic Ukraine
 
Messing with binary formats
Ange Albertini
 
Safer’s Tips & Tricks to Optimize Top FME Transformers
Safe Software
 
Griffon demo
James Kirkbride
 
Your first 5 PHP design patterns - ThatConference 2012
Aaron Saray
 
Ad

More from Shougo (12)

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

Recently uploaded (20)

PPTX
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
PDF
Letasoft Sound Booster 1.12.0.538 Crack Download+ Product Key [Latest]
HyperPc soft
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PDF
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PDF
Continouous failure - Why do we make our lives hard?
Papp Krisztián
 
PPTX
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PPTX
MiniTool Power Data Recovery Full Crack Latest 2025
muhammadgurbazkhan
 
PPTX
Engineering the Java Web Application (MVC)
abhishekoza1981
 
PDF
Capcut Pro Crack For PC Latest Version {Fully Unlocked} 2025
hashhshs786
 
PPT
MergeSortfbsjbjsfk sdfik k
RafishaikIT02044
 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
PDF
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
PPTX
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
PDF
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
Letasoft Sound Booster 1.12.0.538 Crack Download+ Product Key [Latest]
HyperPc soft
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Continouous failure - Why do we make our lives hard?
Papp Krisztián
 
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
MiniTool Power Data Recovery Full Crack Latest 2025
muhammadgurbazkhan
 
Engineering the Java Web Application (MVC)
abhishekoza1981
 
Capcut Pro Crack For PC Latest Version {Fully Unlocked} 2025
hashhshs786
 
MergeSortfbsjbjsfk sdfik k
RafishaikIT02044
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
Import Data Form Excel to Tally Services
Tally xperts
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 

Vim conf2019