My dark plugins development
history ~ over 10 years ~ShougoNote"My presentation may
be the last.
So I need to speak thedevelopment history."
2

Profile●Shougo= 暗黒美無王●“Dark Vim Master”(pronounciation: Uncock Vim Awe)●

Text editor is the world=3

VimConf 2019’s theme●“How to be more productive withVim?”4

“more productive with Vim” is ...
●To develop dark plugins is myproductive method!

5

My theme is ...
●●My dark plugins development
history over 10 years“Why does Shougo discard Vim
script and choose Python3
instead?”6

What is “dark plugins”?(1)●●I want to do everything inVim(neovim) like Emacs
It is not allowed by “:help designnot” in Vim

7What is “dark plugins”?(2)●It is not the light way to use Vim●

I have defined it as the dark way

My plugins aredark powered!
8

Zero generation plugins●

Autocomplpop.vim(acp.vim)●

FuzzyFinder.vim(fzf.vim)●Shell.vim

9Why did I use the plugins?
●

I used IDEs in Windows●

I wanted to use IDE features10

Why did I quit to use zerogeneration plugins?
●The plugins are not customizable
fully

●

Does not exist plugins for me●

I can create the plugins!

11

st

1 generation plugins●

vimshell.vim (2009)●

neocomplcache.vim (2009)●

neosnippet.vim (2012)12

Vimshell.vim

13

Neocomplcache.vim

14

Neosnippet.vim

15

st

1 generation features●

Custimizable●

Many functions●

Pluggable

16

2nd

generation plugins●

unite.vim (2010)●

vimfiler.vim (2010)●

neobundle.vim (2011)●

neocomplete.vim (2013)17

2ndgeneration features●

Use if_lua●

Plugins combination18

I choosed if_lua because...

Vim script is
too Slow!!!

19Plugins combination examples●●●

Unite.vim + vimfiler.vim
Neocomplete.vim +neosnippet.vim
Unite.vim + neobundle.vim

20

3rdgeneration plugins●

deoplete.nvim (2015)●

denite.nvim (2016)●deol.nvim (2016)●

dein.vim (2015)

21

3rdgeneration features●

Use Vim8/neovim features●

Use Python3 instead●

Asynchronous22

Use Vim8/neovim features●:terminal●

Job APIs●

Remote plugins●winid●And more…

●

No more Vim 7!
23

I have chosen Python3 because...

Vim script istoo Slow!!!

24

Python3 vs if_lua

if_lua90%

10%

Python325

For example:slow!
26

4thgeneration plugins●

deoplete.nvim (2019, ver. 5.1~)●

denite.nvim (2019, ver. 3.0~)●

deoppet.nvim (2017)●

defx.nvim (2018)

27

4th

generation features●

Type definitions●

Non default key-mappings●

Remove configuration variables

mappings

variables28

Why is type definition important?
●

It can detect some bugs●

Detect bugs is important29

Why non default key-mappings?(1)https://github.com/Shougo/defx.nvim/issues/530

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!
31

Why I have removed configuration
variables?
●●

Functions can keep interfaces in
multiple plugins
Example:call defx#custom#option('_', {})call denite#custom#option('_', {})32

Let’s create your plugins!
●This is just my history.

●You can choose other selection!

33

Your Vim is your text editor!

34

The extra: denite.nvim version 3ShougoDenite.nvim big changes●

Many issues are reported afterupgrade

36

Denite.nvim version 2●

Steal your input●

Define original mappings●

Similar to ctrlp.vim

37

Denite.nvim version 2

Prompt38

Prompt UI’s disadvantages●

Ignore user’s configuration●

Hard to work asynchronously●●

Cannot combine with otherplugins

They fit with my policy???
39

My plugin development policy●

Customizable●

Combine with other plugins●Asynchronous if possible

40Denite.nvim version 3●●

Replace prompt.nvim to normalbuffer
Edit buffer instead of commandline

41

Denite.nvim version 3Normal buffer
Edit buffer42

New UI advantages●

Use user’s configuration●

Easy to work asynchronously●

Can combine with other plugins●The features fit with my policy!

43Denite.nvim version 3 Demo

44

The extra2: My development noteShougoMy development style●https://employmen
t.en-japan.com/en
gineerhub/entry/2
018/08/28/11000046

I don’t use memo plugins!
●Memolist.vim●

QfixHowm●Vimwiki●…

47I use paper note for development●Here48

I use the paper note for...
●(Finished)task list

●Technology notes●

Survey for issues

49Why do I use paper note?
●

Not needed PC!

●Free style

50

The note is the strongest Vim for me!
●

Thank you!

51

End
●

Any questions?

52