Chapter 12. vile—vi Like Emacs

vile stands for "vi Like Emacs." It started out as a copy of Version 3.9 of MicroEMACS that was modified to have the "finger feel" of vi. Thomas Dickey and Paul Fox are the maintainers. Over the years (since 1990), there have been other contributors, including Kevin Buettner and Clark Morgan.

The current version is 9.5, with a planned release of 9.6 late in 2007 before this book is expected to be printed. The screenshots in this chapter were made with 9.5s (a pre-release beta). Until the late 1990s, version numbers advanced roughly one per year; starting with 1999 the scheme is about 0.1 per year — someday reaching 10.

This chapter was written using vile.

12.1. Authors and History

Paul Fox describes the early vile history this way:

vile's design goal has always been a little different than that of the other clones. vile has never really attempted to be a "clone" at all, though most people find it close enough. I started it because in 1990 I wanted to to be able to edit multiple files in multiple windows, I had been using vi for 10 years already, and the sources to Micro-EMACS came floating past my newsreader at a job where I had too much time on my hands. I started by changing the existing keymaps in the obvious way, and ran full-tilt into the "Hey! Where's `insert' mode?" problem. So I hacked a little more, and hacked a little more, and eventually released in '91 or '92. (Starting soon thereafter, major version numbers tracked the year of release: 7.3 was the third release in '97.)

But my goal has always been to preserve finger-feel (as opposed to the display visuals), and, selfishly, to preserve finger-feel most for the commands I use. ⌣ vile has quite an amazing ex mode, that works very well—it just looks really odd, and a couple of commands which are beyond the scope of the current parser are missing. For the same reasons, vile also won't fully parse existing .exrc files, since I don't really think that's so important—it does simple ones, but more sophisticated ones need some tweaking. But when you toss in vile's built-in command/macro language, you quickly forget you ever cared about .exrc.

Thomas Dickey started working on vile in December of 1992, initially just contributing patches, and later doing more significant features and extensions, such as line numbering, name completion, and animating the buffer list window. He states that "Integrating features together is more important to my design goals than implementing a large number of features."

In February of 1994, Kevin Buettner started working on vile. Initially, he supplied bug fixes for the X11 version, xvile, and then improvements, such as scrollbars. This evolved into support for the Motif, OpenLook, and Athena widget sets. Because, surprisingly, the Athena widgets were not "universally available in a bugfree form," he wrote a version that used the raw Xt toolkit. This version ended up providing superior functionality to the Athena version. Kevin also contributed the initial support in vile for GNU Autoconf.

The Win32 GUI port, called winvile started in 1997, continued on with extensions including an OLE server and a Visual Studio add-in.

In the 6th edition of this book, the Perl interface and major modes (discussed below) were relatively new. Those are stable, used as a basis for other features such as a server (using the Perl interface) and syntax highlighting based on the major modes. For the near term, future work will focus on improving the locale support.