Classic Unix/Linux editor Vim gets first update in years

After more than a decade, the vi, or Vim, editor is getting a major update.
Written by Steven Vaughan-Nichols, Senior Contributing Editor

In 1976, Bill Joy, co-founder of Sun Microsystems and BSD Unix hacker, needed a text editor that would work over a 300 baud modem connection. Emacs wouldn't do. As Joy has said, "The people doing Emacs were sitting in labs at MIT with what were essentially fibre-channel links to the host, in contemporary terms." So, he created vi, and thus began the longest tech flame war in history.

Vim 8

The classic vi programming editor has received its first update in more than a decade. (Image: ZDNet)

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.

Vim also now supports JavaScript Object Notation (JSON). Since JSON is widely supported and can easily be used for inter-process communication, this makes writing a server in any language much easier. It also makes it possible to build very complex plugins, written in any language and running in a separate process.

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.

Vim 8 is now available for Linux, Unix, Windows, and macOS. The program is also available for other, more obscure operating systems such as AmigaOS. It will be automatically updated in most modern BSD and Linux distributions.

Jokes aside about how much better vi is than Emacs, this new, updated Vim really is a major step forward for vi developers. You can teach an old programming dog new tricks.

Related Stories:

Editorial standards