Today, most of us use graphical text editors, but many developers still use vi, or its modern clone Vim, or Emacs, and they're as passionate about their choice of editors as ever. I'm not sure why since vi is clearly the better choice.
After almost 40 years of development, there's not a lot left to be improved in Vim. But, after a decade, some things needed changing. So it is that Vim 8 has just been released.
This release is not just obscure bug fixes. It also includes significant improvements. These are:
Asynchronous I/O support: Vim can now exchange messages with other processes in the background via channels. This makes it possible to have servers do work and send back the results to Vim.
Jobs: Vim can now start a job, communicate with it and stop it. This is very useful to run a process for completion, syntax checking, etc. Channels are used to communicate with the job. Jobs can also read from or write to a buffer or a file.
Timers: Vim also now supports asynchronous timers. These can fire once or repeatedly and invoke a function to do any work.
Plugin Package support: To keep the ever increasing number of plugins in check, plugins manageable package support has been added. This is a convenient way to get one or more plugins, drop them in a directory and possibly keep them updated. Vim will automatically load them, or only when desired.
Window IDs: I've been waiting for this one for decades. Previously, Vim 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.
Wrapping lines with indent: The 'breakindent' option has been added to be able to wrap lines without changing the amount of indent.
There are other significant improvements as well. On the interface fronts, Vim now supports Microsoft Windows' DirectX and the GTK3 GUI toolkit.