SlideShare una empresa de Scribd logo
1 de 30
Introduction to Vim 8.0
VimConf 2016
2016-11-05 Ken Takata
VimConf 2016 2
Who am I?
● Name: K.Takata
● Twitter: @k_takata
● GitHub: k-takata
● Web: http://k-takata.o.oo7.jp/
● Maintainer of Onigmo. (The regex engine of Ruby 2.0 and later)
● One of the most active Vim contributor in Japan.
K.T
VimConf 2016 3
Contents
● New features of Vim 8.0
● History of Vim
● Contributions of Japanese people to Vim
VimConf 2016 4
Congratulations
● Vim 8.0 was released on Sep. 12, 2016.
– Three years from the last minor release. (7.4)
– Ten years from the last major release. (7.0)
● More than 2300 patches from nearly
200 contributors were merged after 7.4.
V(im)8!
V(im)8!
V(im)8を称えよ!
VimConf 2016 5
New Features of Vim 8.0
● Vim script enhancements
– Asynchronous I/O support (channels), Jobs, Timers
– Partials, Lambda and Closure
– 64-bit Numbers
– Window IDs
– New style tests
● Packages
● Wrapping lines with indent (‘breakindent’)
● Windows: DirectWrite support
● GTK+ 3 support See `:help version8`
VimConf 2016 6
New Features of Vim 8.0 (contd.)
● Most of the new features are enhancement of Vim script.
● New features for end users are not so much.
● So at first Bram had been going to release it as 7.5, but finally
he decided to release it as 8.0, because it is easier to
understand for end users when a plugin requires new features
from Vim 8.0.
VimConf 2016 7
Asynchronous I/O support (Channels)
● Vim can now exchange messages with other processes in the
background.
● You can send a message to a server, then you can get the
results from it asynchronously.
● You can use sockets or standard I/O.
● You can use JSON, linewise or raw format.
See `:help channel-demo`
VimConf 2016 8
Jobs and Timers
● Vim can now start a job, communicate with it and stop it.
● Channels are used to communicate with the job.
● Vim can now use timers.
● They can fire once or periodically.
See `:help job_start()`
See `:help timer_start()`
VimConf 2016 9
Partials, Lambda and Closure
● A Funcref optionally binds a Dictionary and/or arguments.
This is called a Partial.
● Useful for timers and other callback functions.
● A short way to create a function has been added: {args -> expr}.
● This is useful for functions such as `filter()` and `map()`.
● Written by Yasuhiro Matsumoto (mattn), vim-jp members and me.
See `:help lambda` and `:help closure`
See `:help Partial`
VimConf 2016 10
64-bit Numbers
● Vim now uses 64-bit Numbers on almost platforms.
● Useful when handling filesizes (> 2GiB), timestamps and other
large values.
● Written by mattn and me.
See `:help Number`
VimConf 2016 11
Window IDs
● Previously windows could only be accessed by their number.
And every time a window would open, close or move that
number changes.
● Each window now has a unique ID, so that they are easy to
find.
● Useful for plugin writers.
See `:help win_getid()` and `:help win_id2win()`
VimConf 2016 12
New style tests
● This is for Vim developers.
● So far writing tests for Vim has not been easy.
● Vim 8 adds assert functions and a framework to run tests.
● If you write a patch for Vim, you should use them.
See `:help test-functions`
VimConf 2016 13
Packages
● Vim now has minimal support for managing plugins.
● If you unpack a plugin in a package directory, Vim can load it
automatically (or on demand).
● This can be a replacement for pathogen.
● If you want to download plugins from GitHub and etc., maybe
you still need to use a plugin manager like Vundle, NeoBundle,
vim-plug, etc.
See `:help packages`
VimConf 2016 14
Wrapping lines with indent (‘breakindent’)
Off
On
From my slides
of VimConf 2013
VimConf 2016 15
Wrapping lines with indent (contd.)
● The 'breakindent' option has been added to be able to wrap
lines without changing the amount of indent.
● The first version was written in 2004.
● It took ten years to be merged. (There were some problems;
coding style problems, lack of tests.)
● Tests are very important to be merged.
See `:help ’breakindent’`
VimConf 2016 16
DirectWrite support on Windows
● Better text rendering on Windows
– Better rendering quality
– Better multilingual support
● Written by Taro Muraoka (koron) and me.
● See also: https://www.kaoriya.net/blog/2013/05/05/ (in Japanese)
● TODO: Using Direct2D
– Currently it uses GDI compatible mode. So it is slower than using Direct2D.
● Copy the background to a buffer, render with DirectWrite, then copy back to GDI buffer.
– Color emojis are not supported on GDI compatible mode.
See `:help ’renderoptions’`
VimConf 2016 17
GTK+ 3 support
● The GTK+ 3 GUI works just like GTK+ 2.
● Written by Kazunobu Kuriyama (nuko8).
VimConf 2016 18
History of Vim
Date Version Description
Nov. 2, 1991 1.14 First public release
Dec. 14, 1993 2.0 The first release using the name Vi IMproved.
Aug. 12, 1994 3.0 Support for multiple windows
May 29, 1996 4.0 Graphical user interface
Feb. 19, 1998 5.0 Syntax highlighting, basic scripting
Sep. 26, 2001 6.0 Folding, plugins, multi-language, etc.
May 7, 2006 7.0 Spell checking, code completion, tab pages, current line and column
highlighting, undo branches, and more
May 12, 2007 7.1 Bug fixes, new syntax and runtime files, etc.
Aug. 9, 2008 7.2 Floating point support in scripts, new syntax files, etc.
Aug. 15, 2010 7.3 Lua and Python3 support, Blowfish encryption, persistent undo/redo
Aug. 10, 2013 7.4 A new, faster regular expression engine.
Sep. 12, 2016 8.0 Asynchronous I/O support, jobs, lambdas, etc.
From Wikipedia (some dates are different from vim_faq)
25 years ago
VimConf 2016 19
Commits graph of Vim
8.07.47.37.27.17.0
From https://github.com/vim/vim/graphs/contributors
VimConf 2016 20
Last patch numbers
Version Last patch number
7.0 243
7.1 330
7.2 446
7.3 1314
7.4 2367
8.0 On going (60 for now)
VimConf 2016 21
Contributors to Vim
● Vim 7.4.001 to 7.4.2367 patch contributor ranking
https://gist.github.com/k-takata/628ff1103f92b9135041a15c43c85b32
No. Patches Name (Country)
1 210 Christian Brabandt (Germany)
2 174 Ken Takata (Japan)
3 103 Hirohito Higashi (Japan)
4 92 Yasuhiro Matsumoto (Japan)
5 86 Dominique Pelle (France)
6 45 Yegappan Lakshmanan (?)
7 39 Kazunobu Kuriyama (Japan (maybe))
8 34 Mike Williams (?)
9 32 ZyX (Russia)
10 28 Ozaki Kiichi (Japan)
VimConf 2016 22
Contributors to Vim (contd.)
● Nearly 200 people contributed to Vim within 7.4.001 to 7.4.2367
from all over the world including Japan.
VimConf 2016 23
Contributions of Japanese people to Vim
● Vim-jp plays a very big role for this.
– Many patches and bug reports have been submitted to vim_dev from
vim-jp members.
VimConf 2016 24
What is vim-jp?
● Vim-jp is a community for Japanese vimmers. It aims to collect all
resources of Vim related to Japan/Japanese.
● Started on Sep. 15, 2011. (Five years ago.)
● Official Web Site: http://vim-jp.org/
● Issue Tracking System: https://github.com/vim-jp/issues/issues
– Discuss Vim’s issues, create and review patches for Vim, etc.
● Reading vimrc: http://vim-jp.org/reading-vimrc/
– Read vimrcs on every Saturday night. (11PM JST)
VimConf 2016 25
Achievements of vim-jp and Japanese people
● Before vim-jp (2011), 19 patches from six Japanese people were
merged.
● On 2012, 59 patches from nine Japanese people.
– Data from Taro Muraoka’s slides for ujihisa.vim #3.
http://koron.github.io/ujihisa-201211/
● After Vim 7.4, about 560 patches from about 25 Japanese people
were merged in three years. (About 186 patches per year) (Note
that not all people are member of vim-jp.)
● Number of patches becomes ten times in five years.
VimConf 2016 26
Patches from vim-jp members
● Channels, jobs and timers support on Windows.
● Lambda and closure.
● 64-bit Number support.
● DirectWrite support.
● Many bug fixes related to Japanese and multibyte.
● And etc.
VimConf 2016 27
Moving to GitHub
● Last year (2015), the official repository of Vim moved from Google Code to
GitHub. (Because Google Code shut down.)
– There were two alternatives: GitHub and Bitbucket.
● Vim-jp members think that success of vim-jp might have influence to the
decision. See Taro’s slides for VimConf 2015:
https://drive.google.com/file/d/0ByQIX4Ls1SHlaGFJamN6bnZiUE0/view
● Vim official repository has CI on Travis-CI and AppVeyor. This is also based
on vim-jp’s work: https://github.com/vim-jp/vim-ci
● Now Vim has nightly builds for Windows (based on my work):
https://github.com/vim/vim-win32-installer
VimConf 2016 28
Test Coverage
● One year ago the test coverage of Vim was about 58%.
● Now it becomes about 68%. https://coveralls.io/github/vim/vim
VimConf 2016 29
Test Coverage (contd.)
● Vim uses Coveralls for showing coverage data.
● This is also based on vim-jp’s work. So it can be said that vim-jp also
contributed indirectly to keep the quality of Vim’s source codes.
● Bram also cares about the coverage.
● Unfortunately sometimes Coveralls cannot show very large source
files. Eval.c (the Vim script engine) was very large and it couldn’t show
on Coveralls. So he divided eval.c into several files. Now we can see it
on Coveralls.
VimConf 2016 30
Conclusions
● Vim 8.0 was released on September with many new features
mainly in enhancements of Vim script.
● Many people from all over the world contributed to it.
● Japanese people and vim-jp also played a big role for it.
Vim-jp is waiting your contributions!

Más contenido relacionado

La actualidad más candente

Porting Puppet to OpenBSD
Porting Puppet to OpenBSD Porting Puppet to OpenBSD
Porting Puppet to OpenBSD Puppet
 
使用Eclipse快樂的mruby開發
使用Eclipse快樂的mruby開發使用Eclipse快樂的mruby開發
使用Eclipse快樂的mruby開發yamanekko
 
Understanding how concurrency work in os
Understanding how concurrency work in osUnderstanding how concurrency work in os
Understanding how concurrency work in osGenchiLu1
 
Geb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosperGeb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosperEsther Lozano
 
Python Django Basics
Python Django BasicsPython Django Basics
Python Django BasicsRahilMemon5
 
Montreal.rb ruby debugging basics - march 20th 2012
Montreal.rb   ruby debugging basics - march 20th 2012Montreal.rb   ruby debugging basics - march 20th 2012
Montreal.rb ruby debugging basics - march 20th 2012Rafael Rosa
 
Beginning python programming
Beginning python programmingBeginning python programming
Beginning python programmingkanteshraj
 
about Debian "squeeze" @201002 OSC Tokyospring
about Debian "squeeze" @201002 OSC Tokyospringabout Debian "squeeze" @201002 OSC Tokyospring
about Debian "squeeze" @201002 OSC TokyospringHideki Yamane
 
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...Tom Limoncelli
 
Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?Orest Ivasiv
 
Mozilla Shumway - opensource meetup budapest
Mozilla Shumway - opensource meetup budapestMozilla Shumway - opensource meetup budapest
Mozilla Shumway - opensource meetup budapestRobert Szaloki
 
find & improve some bottleneck in Debian project (DebConf14 LT)
find & improve some bottleneck in Debian project (DebConf14 LT)find & improve some bottleneck in Debian project (DebConf14 LT)
find & improve some bottleneck in Debian project (DebConf14 LT)Hideki Yamane
 
Type script新鮮貨報你知
Type script新鮮貨報你知Type script新鮮貨報你知
Type script新鮮貨報你知Jimmy Ho
 
Nh php may 2014 - composer
Nh php   may 2014 - composerNh php   may 2014 - composer
Nh php may 2014 - composerDavid Weingart
 
EuroBSDCon 2021 - (auto)Installing BSD Systems
EuroBSDCon 2021 - (auto)Installing BSD SystemsEuroBSDCon 2021 - (auto)Installing BSD Systems
EuroBSDCon 2021 - (auto)Installing BSD SystemsVinícius Zavam
 

La actualidad más candente (20)

Vim and Python
Vim and PythonVim and Python
Vim and Python
 
Porting Puppet to OpenBSD
Porting Puppet to OpenBSD Porting Puppet to OpenBSD
Porting Puppet to OpenBSD
 
使用Eclipse快樂的mruby開發
使用Eclipse快樂的mruby開發使用Eclipse快樂的mruby開發
使用Eclipse快樂的mruby開發
 
Understanding how concurrency work in os
Understanding how concurrency work in osUnderstanding how concurrency work in os
Understanding how concurrency work in os
 
Geb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosperGeb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosper
 
Server side swift
Server side swiftServer side swift
Server side swift
 
Python Django Basics
Python Django BasicsPython Django Basics
Python Django Basics
 
Montreal.rb ruby debugging basics - march 20th 2012
Montreal.rb   ruby debugging basics - march 20th 2012Montreal.rb   ruby debugging basics - march 20th 2012
Montreal.rb ruby debugging basics - march 20th 2012
 
Beginning python programming
Beginning python programmingBeginning python programming
Beginning python programming
 
about Debian "squeeze" @201002 OSC Tokyospring
about Debian "squeeze" @201002 OSC Tokyospringabout Debian "squeeze" @201002 OSC Tokyospring
about Debian "squeeze" @201002 OSC Tokyospring
 
Git In One Evening
Git In One EveningGit In One Evening
Git In One Evening
 
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
 
Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?
 
Mozilla Shumway - opensource meetup budapest
Mozilla Shumway - opensource meetup budapestMozilla Shumway - opensource meetup budapest
Mozilla Shumway - opensource meetup budapest
 
The Rust Programming Language
The Rust Programming LanguageThe Rust Programming Language
The Rust Programming Language
 
find & improve some bottleneck in Debian project (DebConf14 LT)
find & improve some bottleneck in Debian project (DebConf14 LT)find & improve some bottleneck in Debian project (DebConf14 LT)
find & improve some bottleneck in Debian project (DebConf14 LT)
 
Type script新鮮貨報你知
Type script新鮮貨報你知Type script新鮮貨報你知
Type script新鮮貨報你知
 
Nh php may 2014 - composer
Nh php   may 2014 - composerNh php   may 2014 - composer
Nh php may 2014 - composer
 
EuroBSDCon 2021 - (auto)Installing BSD Systems
EuroBSDCon 2021 - (auto)Installing BSD SystemsEuroBSDCon 2021 - (auto)Installing BSD Systems
EuroBSDCon 2021 - (auto)Installing BSD Systems
 
Ruxmon.2015-08.-.proxenet
Ruxmon.2015-08.-.proxenetRuxmon.2015-08.-.proxenet
Ruxmon.2015-08.-.proxenet
 

Similar a Introduction to Vim 8.0

Let's use AppVeyor
Let's use AppVeyorLet's use AppVeyor
Let's use AppVeyork-takata
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovimShougo
 
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...Igalia
 
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Shougo
 
Useful Vim Plugins
Useful Vim PluginsUseful Vim Plugins
Useful Vim Pluginsanveo
 
Unicon July 2015 IAM Briefing
Unicon July 2015 IAM BriefingUnicon July 2015 IAM Briefing
Unicon July 2015 IAM BriefingJohn Gasper
 
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxWAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxIgalia
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205Linaro
 
Identity & Access Management Briefing
Identity & Access Management BriefingIdentity & Access Management Briefing
Identity & Access Management BriefingCharise Arrowood
 
Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3Craig Rodrigues
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectIgalia
 
Open MPI SC'15 State of the Union BOF
Open MPI SC'15 State of the Union BOFOpen MPI SC'15 State of the Union BOF
Open MPI SC'15 State of the Union BOFJeff Squyres
 
LCU14 Keynote by George Grey
LCU14 Keynote by George GreyLCU14 Keynote by George Grey
LCU14 Keynote by George GreyLinaro
 
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Amanda Lam
 
Software development made serious
Software development made seriousSoftware development made serious
Software development made seriousDanilo Pianini
 

Similar a Introduction to Vim 8.0 (20)

Let's use AppVeyor
Let's use AppVeyorLet's use AppVeyor
Let's use AppVeyor
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
 
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
 
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
 
Git Basics
Git BasicsGit Basics
Git Basics
 
Useful Vim Plugins
Useful Vim PluginsUseful Vim Plugins
Useful Vim Plugins
 
Opensource Software usability
Opensource Software usabilityOpensource Software usability
Opensource Software usability
 
Unicon July 2015 IAM Briefing
Unicon July 2015 IAM BriefingUnicon July 2015 IAM Briefing
Unicon July 2015 IAM Briefing
 
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxWAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205
 
Identity & Access Management Briefing
Identity & Access Management BriefingIdentity & Access Management Briefing
Identity & Access Management Briefing
 
Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium project
 
Open MPI SC'15 State of the Union BOF
Open MPI SC'15 State of the Union BOFOpen MPI SC'15 State of the Union BOF
Open MPI SC'15 State of the Union BOF
 
Introduction to IoT.JS
Introduction to IoT.JSIntroduction to IoT.JS
Introduction to IoT.JS
 
LCU14 Keynote by George Grey
LCU14 Keynote by George GreyLCU14 Keynote by George Grey
LCU14 Keynote by George Grey
 
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
 
oVirt – open your virtual datacenter
oVirt – open your virtual datacenteroVirt – open your virtual datacenter
oVirt – open your virtual datacenter
 
FFmpeg: A Retrospective
FFmpeg: A RetrospectiveFFmpeg: A Retrospective
FFmpeg: A Retrospective
 
Software development made serious
Software development made seriousSoftware development made serious
Software development made serious
 

Último

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 

Último (20)

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 

Introduction to Vim 8.0

  • 1. Introduction to Vim 8.0 VimConf 2016 2016-11-05 Ken Takata
  • 2. VimConf 2016 2 Who am I? ● Name: K.Takata ● Twitter: @k_takata ● GitHub: k-takata ● Web: http://k-takata.o.oo7.jp/ ● Maintainer of Onigmo. (The regex engine of Ruby 2.0 and later) ● One of the most active Vim contributor in Japan. K.T
  • 3. VimConf 2016 3 Contents ● New features of Vim 8.0 ● History of Vim ● Contributions of Japanese people to Vim
  • 4. VimConf 2016 4 Congratulations ● Vim 8.0 was released on Sep. 12, 2016. – Three years from the last minor release. (7.4) – Ten years from the last major release. (7.0) ● More than 2300 patches from nearly 200 contributors were merged after 7.4. V(im)8! V(im)8! V(im)8を称えよ!
  • 5. VimConf 2016 5 New Features of Vim 8.0 ● Vim script enhancements – Asynchronous I/O support (channels), Jobs, Timers – Partials, Lambda and Closure – 64-bit Numbers – Window IDs – New style tests ● Packages ● Wrapping lines with indent (‘breakindent’) ● Windows: DirectWrite support ● GTK+ 3 support See `:help version8`
  • 6. VimConf 2016 6 New Features of Vim 8.0 (contd.) ● Most of the new features are enhancement of Vim script. ● New features for end users are not so much. ● So at first Bram had been going to release it as 7.5, but finally he decided to release it as 8.0, because it is easier to understand for end users when a plugin requires new features from Vim 8.0.
  • 7. VimConf 2016 7 Asynchronous I/O support (Channels) ● Vim can now exchange messages with other processes in the background. ● You can send a message to a server, then you can get the results from it asynchronously. ● You can use sockets or standard I/O. ● You can use JSON, linewise or raw format. See `:help channel-demo`
  • 8. VimConf 2016 8 Jobs and Timers ● Vim can now start a job, communicate with it and stop it. ● Channels are used to communicate with the job. ● Vim can now use timers. ● They can fire once or periodically. See `:help job_start()` See `:help timer_start()`
  • 9. VimConf 2016 9 Partials, Lambda and Closure ● A Funcref optionally binds a Dictionary and/or arguments. This is called a Partial. ● Useful for timers and other callback functions. ● A short way to create a function has been added: {args -> expr}. ● This is useful for functions such as `filter()` and `map()`. ● Written by Yasuhiro Matsumoto (mattn), vim-jp members and me. See `:help lambda` and `:help closure` See `:help Partial`
  • 10. VimConf 2016 10 64-bit Numbers ● Vim now uses 64-bit Numbers on almost platforms. ● Useful when handling filesizes (> 2GiB), timestamps and other large values. ● Written by mattn and me. See `:help Number`
  • 11. VimConf 2016 11 Window IDs ● Previously windows could only be accessed by their number. And every time a window would open, close or move that number changes. ● Each window now has a unique ID, so that they are easy to find. ● Useful for plugin writers. See `:help win_getid()` and `:help win_id2win()`
  • 12. VimConf 2016 12 New style tests ● This is for Vim developers. ● So far writing tests for Vim has not been easy. ● Vim 8 adds assert functions and a framework to run tests. ● If you write a patch for Vim, you should use them. See `:help test-functions`
  • 13. VimConf 2016 13 Packages ● Vim now has minimal support for managing plugins. ● If you unpack a plugin in a package directory, Vim can load it automatically (or on demand). ● This can be a replacement for pathogen. ● If you want to download plugins from GitHub and etc., maybe you still need to use a plugin manager like Vundle, NeoBundle, vim-plug, etc. See `:help packages`
  • 14. VimConf 2016 14 Wrapping lines with indent (‘breakindent’) Off On From my slides of VimConf 2013
  • 15. VimConf 2016 15 Wrapping lines with indent (contd.) ● The 'breakindent' option has been added to be able to wrap lines without changing the amount of indent. ● The first version was written in 2004. ● It took ten years to be merged. (There were some problems; coding style problems, lack of tests.) ● Tests are very important to be merged. See `:help ’breakindent’`
  • 16. VimConf 2016 16 DirectWrite support on Windows ● Better text rendering on Windows – Better rendering quality – Better multilingual support ● Written by Taro Muraoka (koron) and me. ● See also: https://www.kaoriya.net/blog/2013/05/05/ (in Japanese) ● TODO: Using Direct2D – Currently it uses GDI compatible mode. So it is slower than using Direct2D. ● Copy the background to a buffer, render with DirectWrite, then copy back to GDI buffer. – Color emojis are not supported on GDI compatible mode. See `:help ’renderoptions’`
  • 17. VimConf 2016 17 GTK+ 3 support ● The GTK+ 3 GUI works just like GTK+ 2. ● Written by Kazunobu Kuriyama (nuko8).
  • 18. VimConf 2016 18 History of Vim Date Version Description Nov. 2, 1991 1.14 First public release Dec. 14, 1993 2.0 The first release using the name Vi IMproved. Aug. 12, 1994 3.0 Support for multiple windows May 29, 1996 4.0 Graphical user interface Feb. 19, 1998 5.0 Syntax highlighting, basic scripting Sep. 26, 2001 6.0 Folding, plugins, multi-language, etc. May 7, 2006 7.0 Spell checking, code completion, tab pages, current line and column highlighting, undo branches, and more May 12, 2007 7.1 Bug fixes, new syntax and runtime files, etc. Aug. 9, 2008 7.2 Floating point support in scripts, new syntax files, etc. Aug. 15, 2010 7.3 Lua and Python3 support, Blowfish encryption, persistent undo/redo Aug. 10, 2013 7.4 A new, faster regular expression engine. Sep. 12, 2016 8.0 Asynchronous I/O support, jobs, lambdas, etc. From Wikipedia (some dates are different from vim_faq) 25 years ago
  • 19. VimConf 2016 19 Commits graph of Vim 8.07.47.37.27.17.0 From https://github.com/vim/vim/graphs/contributors
  • 20. VimConf 2016 20 Last patch numbers Version Last patch number 7.0 243 7.1 330 7.2 446 7.3 1314 7.4 2367 8.0 On going (60 for now)
  • 21. VimConf 2016 21 Contributors to Vim ● Vim 7.4.001 to 7.4.2367 patch contributor ranking https://gist.github.com/k-takata/628ff1103f92b9135041a15c43c85b32 No. Patches Name (Country) 1 210 Christian Brabandt (Germany) 2 174 Ken Takata (Japan) 3 103 Hirohito Higashi (Japan) 4 92 Yasuhiro Matsumoto (Japan) 5 86 Dominique Pelle (France) 6 45 Yegappan Lakshmanan (?) 7 39 Kazunobu Kuriyama (Japan (maybe)) 8 34 Mike Williams (?) 9 32 ZyX (Russia) 10 28 Ozaki Kiichi (Japan)
  • 22. VimConf 2016 22 Contributors to Vim (contd.) ● Nearly 200 people contributed to Vim within 7.4.001 to 7.4.2367 from all over the world including Japan.
  • 23. VimConf 2016 23 Contributions of Japanese people to Vim ● Vim-jp plays a very big role for this. – Many patches and bug reports have been submitted to vim_dev from vim-jp members.
  • 24. VimConf 2016 24 What is vim-jp? ● Vim-jp is a community for Japanese vimmers. It aims to collect all resources of Vim related to Japan/Japanese. ● Started on Sep. 15, 2011. (Five years ago.) ● Official Web Site: http://vim-jp.org/ ● Issue Tracking System: https://github.com/vim-jp/issues/issues – Discuss Vim’s issues, create and review patches for Vim, etc. ● Reading vimrc: http://vim-jp.org/reading-vimrc/ – Read vimrcs on every Saturday night. (11PM JST)
  • 25. VimConf 2016 25 Achievements of vim-jp and Japanese people ● Before vim-jp (2011), 19 patches from six Japanese people were merged. ● On 2012, 59 patches from nine Japanese people. – Data from Taro Muraoka’s slides for ujihisa.vim #3. http://koron.github.io/ujihisa-201211/ ● After Vim 7.4, about 560 patches from about 25 Japanese people were merged in three years. (About 186 patches per year) (Note that not all people are member of vim-jp.) ● Number of patches becomes ten times in five years.
  • 26. VimConf 2016 26 Patches from vim-jp members ● Channels, jobs and timers support on Windows. ● Lambda and closure. ● 64-bit Number support. ● DirectWrite support. ● Many bug fixes related to Japanese and multibyte. ● And etc.
  • 27. VimConf 2016 27 Moving to GitHub ● Last year (2015), the official repository of Vim moved from Google Code to GitHub. (Because Google Code shut down.) – There were two alternatives: GitHub and Bitbucket. ● Vim-jp members think that success of vim-jp might have influence to the decision. See Taro’s slides for VimConf 2015: https://drive.google.com/file/d/0ByQIX4Ls1SHlaGFJamN6bnZiUE0/view ● Vim official repository has CI on Travis-CI and AppVeyor. This is also based on vim-jp’s work: https://github.com/vim-jp/vim-ci ● Now Vim has nightly builds for Windows (based on my work): https://github.com/vim/vim-win32-installer
  • 28. VimConf 2016 28 Test Coverage ● One year ago the test coverage of Vim was about 58%. ● Now it becomes about 68%. https://coveralls.io/github/vim/vim
  • 29. VimConf 2016 29 Test Coverage (contd.) ● Vim uses Coveralls for showing coverage data. ● This is also based on vim-jp’s work. So it can be said that vim-jp also contributed indirectly to keep the quality of Vim’s source codes. ● Bram also cares about the coverage. ● Unfortunately sometimes Coveralls cannot show very large source files. Eval.c (the Vim script engine) was very large and it couldn’t show on Coveralls. So he divided eval.c into several files. Now we can see it on Coveralls.
  • 30. VimConf 2016 30 Conclusions ● Vim 8.0 was released on September with many new features mainly in enhancements of Vim script. ● Many people from all over the world contributed to it. ● Japanese people and vim-jp also played a big role for it. Vim-jp is waiting your contributions!