Vim history

A common “storage” medium in 1950s for source code text was punch card decks. You could write one line of code on one punch card, so if you have a 50-line program, you have 50 punch cards. You can reorder them, add or remove cards physically in order to reorder, add or remove lines of code, so you don’t really need a text editor to do that.

Later on punched tape began to be more widespread as the source code storage. This had advantages over punch cards, it was faster and cheaper, but since it was a continuous tape of information, so reordering and editing it manually was practically not so easy.

The history starts in 1962 at MIT where a student Dan Murphy developed a program called TECO to edit the punched tape. It was not really a text editor in the modern sense of the word. It is better described as a command language to apply patches to a stream of text. It had a lot of text manipulation commands. With this set of commands, for example, you could formulate a program that reads the text up to character N, reads a page of text into a “text buffer”, moves “buffer pointer” to character M, inserts some text etc. The idea was that give 2 punched tapes: one containing the original text, and one containing a TECO program, the TECO would produce a new tape with the modified text.

An evolution of TECO was an editor QED originally written at UC Berkeley in 1965. If TECO was character-oriented at the time, QED was line-oriented. Ken Thompson was a student at UC Berkeley at the time. He got access to the QED, and rewritten it for different platforms with a notable addition of having support for regular expressions search.

Later on in 1969 Ken Thompson was working at Bell Labs on Unix, he developed ed, which was much influenced by QED. It also contained regular expression search. It became a standard text editor on Unix, and is still installed on some modern systems by default.

Those editors of 1960s didn’t really have a lot of visual feedback. Partly because at that time there were no widely used computer screens. The output was happening using some external printer or a teletype. Partly because CPUs were not capable of doing graphics. This was about to change in 1970s. A pioneer of graphical text editors was Bravo developed by Xerox PARC company and released in 1974. This editor had modes: command and insert/append. Moreover it was visual, meaning that what you type is what you immediately see on the on a graphical screen. Bravo was a part of the Xerox Alto project, which was a huge innovation and inspiration for Mac OS that gained Vim for Mac software eventually too.

Around 1976 Bill Joy begins to hack on ex. In an interview he says that he took a lot of inspiration from Bravo: the editing modes and the visual feedback. The code was based on ed with a lot of additions. The development of ex continued and it was included in the BSD Unix distribution. In 1979 with ex version 2.0 a new alias name - “vi” came around. So “vi” is just “ex” started in visual mode. Up to this day the Vim source code describes commands written after “:” as “ex commands”. Vim for Mac uses these commands to implement many of the standard menu actions.

After that in 1980s ex/vi gets momentum with the spread of Unix. A new era of personal computers is coming, and the software gets ported or cloned to new and new hardware. One of the clones - STEVIE - was made for Atari ST PC in 1987. This was open sourced, and ported to more platforms by enthusiasts. One of the ports was for Commodore Amiga PC, which became available in 1988. This source code becomes a base for Vim. The first version of Vim is available for the public in 1991.

In 1990s-2000s Vim gains a lot of popularity and adoption that we know it for today. Many OS distributions don’t have “vi” anymore, but install Vim and use it by default instead when you type “vi”. A lot of plugins and extensions are developed for a variety of programming languages. In this period of time it was ported to Vim Mac OS X.

Fast forward to modern days Neovim project starts in 2014. This aims to modernize Vim, bring an option to easily embed Vim engine into a GUI application, and provide a modern API to work with it for both the host app and plugins. Neovim was released at the end of 2015.

The idea of creating DinVim Vim for Mac app to be based on Neovim comes early 2016, but lingers until the summer 2017 when the project starts. The first version is released early 2018.