Skip to content

Instantly share code, notes, and snippets.

@Shougo
Created November 7, 2016 20:16
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shougo/7c78b3a1725f70c1435d004ed14f2558 to your computer and use it in GitHub Desktop.
Save Shougo/7c78b3a1725f70c1435d004ed14f2558 to your computer and use it in GitHub Desktop.
VimConf 2016 slide

denite.nvim The next generation of unite.vim

Presented by Shougo

Introduction

  • The presentation is in English for the foreign people.

  • But the talk is in Japanese.

  • The slide may contain the dark powerd topic(Chuunibyou: 厨二病).

Self introduction

  • My name is Shougo.

  • I am called as Dark Vim Master(暗黒美無王: Uncock Vim Awe).

  • Text editor is the reason to live.

  • My developed plugins: dein.vim, deoplete.nvim, unite.vim, neosnippet.vim, ...

Todays topics

  • What is denite.nvim?

  • Why unite.vim is so slow?

  • Unite.vim problems

  • Denite.vim features

  • The future works

  • Denite.nvim in Vim 8.0

  • The secret topics

What is denite.nvim?

  • It is the Dark powered nEo of uNITE.vim

  • The rewrite of unite.vim by Python3 for neovim/Vim 8.0+

  • It is already faster than unite.vim

Why unite.vim is so slow?

  • "unite.vim slow" is suggested by Google

  • Vim script is slow than Python

  • Unite.vim must save all candidates to implement the features

  • If the Vim script plugin like unite.vim uses huge memory, Vim will be slow

Unite.vim problems

  • Slow, slow, slow!

  • Not easy to extend and debug

  • Easy to conflict other plugins or configurations

Denite.nvim solves them!

  • Denite.nvim is faster

  • Easy to extend if you can write Python3 language

  • Hard to conflict

Denite.nvim usage

  • Almost same with unite.vim

  • Denite {options} {sources}

  • Example: Denite file_rec

Denite.nvim features

  • Python3 implementation

  • Asynchronous candidates update support

  • Decoupled UI

  • Block Vim UI until denite.nvim execution is finished

  • Faster than ctrlp and unite.vim

  • Can call unite sources

Python3 implementation

  • Denite.nvim is written by Python3 like deoplete.nvim

  • The sources are written by Python3

Asynchronous candidates update support

  • You can define the asynchronous source

  • Example: grep, file_rec

Decoupled UI

  • Denite.nvim is splitted into UI and Denite framework

  • The default UI is named as "default"

  • You can define the original UI

  • You can use denite without UI in your plugin like vimfiler.

  • Note: Unite.vim is hardly combined with UI and unite.vim framework

Faster than ctrlp and unite.vim

  • Demo

Can call unite sources

  • unite.vim has "unite" source

  • It can call unite source from denite.nvim

  • Example: :Denite unite:register

  • Demo

The future works

  • neovim-prompt integration Shougo/denite.nvim#40

  • source kind support

  • source completion support: completion(args, arglead)

  • matcher_hide_hidden_files

  • quickmatch feature

  • multiple candidates select

  • choose action

Denite.nvim in Vim 8.0

  • It already works in Vim 8.0 even in Windows.

  • So no problem :-)

  • You need if_python3 enabled Vim8.0+

  • unite.vim development is already finished(Bug fix only)!

The secret topics

  • My next work is to add Vim8 support in deoplete.nvim.

  • And... the next of dark powered plugins!

    • de???: The dark powered neosnippet (new!)

    • de???: The dark powered vinarise (new!)

    • de???: The dark powered vimshell (new!)

    • de???: The dark powered vimfiler (new!)

「参加レポートを書くまでが VimConf」らしいので、VimConf 2016 の感想記事をここに書いておきます。
今回は去年と同じくプラグインを開発しつつ、それについての発表もするということでかなりきつかったです。
何しろ、denite.nvim の開発が本格化したのは 8 月になってからでしたから、それから
unite.vim に匹敵する機能を追加するというのは正直いって無茶でした。
開発をすればするほど足りない機能が見つかりますし。
とはいえ VimConf に間に合わせるために頑張ったので、十分使えるレベルにはなったのではないでしょうか。
私は既にほぼ完全に denite.nvim に移行しています。
皆さんもぜひ試してみてください。
今回、「vimfiler は便利」と発表していた人がいましたね。私も vimfiler は日常的に使用していますが、
vimfiler は unite.vim と密結合しているので unite.vim と同様に拡張は限界を迎えています。
将来的には denite.nvim をベースにしたファイラープラグインを開発する予定です。
今年は Go についての発表が多かったので、私も Go を勉強しないといけないのかなと
思っていたりはします。私にとっての Go 言語というのは、プラグイン (deoplete-go)
のデバッグをするときに テスト的に使うものなので、なかなか本格的に使う暇がありません。
zchee さんが面白いものをたくさん Go で作っているので、それを手伝うために今後は
もっと本格的に使うことになると思っています。
k-takata さんが今回発表されたように、日本には優れた Vimmer の方々が存在しています。
正直言って、国毎で考えると一番レベルが高く優秀な部類になるのではないでしょうか。
しかし、英語での情報発信が少ないからか外国の人にはほとんど知られていません。
私は最近、外国の人と英語でやりとりをすることが多いのですが、この点は非常に残念に思っています。
現在の VimConf は以前より改善されたとはいえ、国際会議とは思われていません。
VimConf が外国の方々も楽しめる国際的なものになることにより、日本人の貢献が
もっと知られていくことでしょう。
来年の VimConf はもっと国際的なものにしたいと考えています。
そのために、来年の VimConf 2016 の実行委員に立候補予定です。
VimConf 2016 の英語記事です。ぜひご覧ください。
https://medium.com/@haya14busa/report-of-vimconf2016-an-international-conference-for-vim-f99925893322#.gybkfz2bg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment