====== Vim ist keine Insel ====== [[01_warum | Vorheriges Kapitel -- 1. Warum Vim?]] ===== 2. Geschichte ===== Die Geschichte von **Vim** ist eine Geschichte von Vorgängern, und sie beginnt zu einer Zeit, als Computer noch ganze Räume füllten. ==== 1966 -- QED ==== {{ :viki:rick_sds_940_1966.jpg?300|}} Die [[http://www.rickcrandall.net/the-1966-sds-940-and-the-internet/ | SDS 940]] von [[https://en.wikipedia.org/wiki/Scientific_Data_Systems | Scientific Data Systems]] (später [[https://de.wikipedia.org/wiki/Xerox | Xerox]]) war 1966 hochmodern: Mit [[https://de.wikipedia.org/wiki/Lochstreifen | Lochstreifenleser und -stanzer]], einem Drucker, und Arbeitsspeicher von bis zu 64k Wörtern zu je 24 Bit. Bis zu 64 Fernschreiber konnten an eine SDS 940 angeschlossen werden und gleichzeitig an ihr arbeiten. //Im Bild: [[http://www.rickcrandall.net/the-1966-sds-940-and-the-internet/ | Rick Crandall an der SDS 940 Seriennummer #2]]; die Aufnahme entstand 1966. Verwendung des Bildes mit freundlicher Genehmigung von Mr. Crandall. Alle Rechte am Bild sind vorbehalten / All rights reserved.// Programmiert wurde in [[https://en.wikipedia.org/wiki/CAL_%28Joss_family%29 | CAL]], [[https://de.wikipedia.org/wiki/Fortran | Fortran IV]] oder [[https://de.wikipedia.org/wiki/BASIC | BASIC]]; als Betriebssystem diente das [[https://en.wikipedia.org/wiki/Berkeley_Timesharing_System | Berkeley Timesharing System]], das an der [[https://de.wikipedia.org/wiki/University_of_California,_Berkeley | University of California, Berkeley]] entwickelt wurde. Zum Programmieren brauchte man natürlich einen Editor, wenn man nicht die Lochkarten oder -streifen von Hand stanzen wollte. (Nicht dass man das nicht auch getan hätte.) Der Editor der SDS 940 war **[[https://en.wikipedia.org/wiki/QED_%28text_editor%29 | QED]]** ("quick editor"), entwickelt von Butler Lampson und L.Peter Deutsch. [[https://de.wikipedia.org/wiki/Ken_Thompson | Ken Thompson]] machte 1966 seinen Master der Informatik in Berkeley. Er schrieb eine **QED**-Version für das [[https://de.wikipedia.org/wiki/Compatible_Time-Sharing_System | Compatible Time-Sharing System]], die Unterstützung für [[https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck | Reguläre Ausdrücke]] hinzufügte; später kam eine in [[https://de.wikipedia.org/wiki/Basic_Combined_Programming_Language | BCPL]] implementierte Version für [[https://de.wikipedia.org/wiki/Multics | Multics]] hinzu. ==== 1971 -- ed ==== {{:viki:pdp7-oslo-2005.jpeg?300 |}} Später arbeitete Thompson an den [[https://de.wikipedia.org/wiki/Bell_Laboratories | Bell Laboratories]], wo er zusammen mit [[https://de.wikipedia.org/wiki/Dennis_Ritchie | Dennis Ritchie]] das Betriebssystem [[https://de.wikipedia.org/wiki/Unix | Unix]] entwickelte -- auf einer [[https://de.wikipedia.org/wiki/PDP-7 | PDP-7]]. //Im Bild: Eine PDP-7. Bild unterliegt der [[https://en.wikipedia.org/wiki/Creative_Commons | Creative Commons]] [[http://creativecommons.org/licenses/sa/1.0/ | Share-Alike]] Lizenz.// Als eine der ersten Komponenten von Unix entwickelte er den Editor **[[https://de.wikipedia.org/wiki/Ed_(Texteditor) | ed]]**, der natürlich stark von Thompsons Erfahrungen mit **QED** beeinflußt war. > Tatsächlich hat **QED** viele Unix-Tools beeinflußt: [[https://de.wikipedia.org/wiki/Grep | grep]] zum Beispiel entstand aus dem **QED**-Befehl `g/re/p` ("global, , print"), und auch [[https://de.wikipedia.org/wiki/Sed_%28Unix%29 | sed]] ("stream editor") hat seinen Befehlssatz von **QED** geerbt. Später hat Dennis Ritchie den Editor noch erheblich weiterentwickelt. Die [[https://de.wikipedia.org/wiki/Single_UNIX_Specification | Single UNIX Specification]] schreibt das Vorhandensein von **ed** zwingend vor. Nicht nur [[https://en.wikipedia.org/wiki/Peter_H._Salus | Peter H. Salus]] hält allerdings **ed** für den "benutzerfeindlichsten Editor der jemals entwickelt wurde", weswegen er heute eigentlich nur noch in Skripten und nicht mehr interaktiv verwendet wird. ==== 1976 -- em ==== Am [[https://de.wikipedia.org/wiki/Queen_Mary,_University_of_London | Queen Mary College]] in London entwickelte George Coulouris eine verbesserte Version von **ed**, den "editor for mortals", //Editor für Sterbliche// (**em**). Leider ist hier die Quellenlage weniger eindeutig als bei den anderen Ahnen von **Vim**; zum einen konnte ich kein Veröffentlichungsdatum für **em** finden. Eine der Verbesserungen, die **em** mitbrachte, war die Nutzung von Videoterminals. Es war immer noch ein reiner Zeileneditor, aber immerhin war **em** nicht mehr auf die Möglichkeiten eines Fernschreibers begrenzt. Jedenfalls spielten die von **em** gemachten Verbesserungen eine große Rolle beim nächsten Schritt in unserer Ahnengalerie. ==== 1978 -- ex ==== [[https://de.wikipedia.org/wiki/Bill_Joy | Bill Joy]] war einer von vier Gründern von [[https://de.wikipedia.org/wiki/Sun_Microsystems | Sun Microsystems]]. Davor war er an der Entwicklung von [[https://de.wikipedia.org/wiki/Berkeley_Software_Distribution | BSD Unix]] beteiligt. Aber auf dieser Webseite steht er, weil er **[[https://de.wikipedia.org/wiki/Ex_(Texteditor) | ex]]** entwickelt hat. Als Weiterentwicklung vom **em** war eines von Joy's Zielen, die Anforderungen an die Rechenleistung zu reduzieren. Veröffentlicht als Teil der ersten BSD-Release, wurde **ex** von [[https://de.wikipedia.org/wiki/Portable_Operating_System_Interface | POSIX]] standardisiert. ==== 1978 -- vi ==== {{ :viki:adm3aimage.jpg?150|}} Später hat Bill Joy seinen Editor um eine den ganzen Bildschirm benutzende Oberfläche erweitert, den "visual mode". Diesen konnte man über den **ex**-Befehl '':visual'' aktivieren; als Abkürzung tat es auch '':vi''. Dieser Modus wurde so populär, dass ein Shortcut angelegt wurde: Der Shell-Befehl ''vi'' startete **ex** direkt im "visual mode". Der Editor **[[https://de.wikipedia.org/wiki/Vi | vi]]** war geboren. //Im Bild: Ein ADM-3A Terminal, auf dem der visual-mode genutzt werden konnte. Bild von [[https://en.wikipedia.org/wiki/ADM-3A#/media/File:Adm3aimage.jpg | Chris Jacobs]], Verwendung unter [[https://en.wikipedia.org/wiki/Creative_Commons | Creative Commons]] [[http://creativecommons.org/licenses/by-sa/3.0 | Attribution-ShareAlike 3.0]].// ==== 1987 -- Stevie ==== **Stevie** war ein **vi**-Klon, den Tim Thompson für den [[https://de.wikipedia.org/wiki/Atari_ST | Atari ST]] geschrieben hat, und 1987 als freie Software in der [[https://de.wikipedia.org/wiki/Newsgroup | Newsgroup]] comp.sys.atari.st veröffentlichte. Tony Andrews entwickelte das Projekt weiter, portierte es auf Unix, [[https://de.wikipedia.org/wiki/OS/2 | OS/2]] und [[https://de.wikipedia.org/wiki/AmigaOS | Amiga]], und veröffentlichte die Quellen auf comp.sources.unix. ==== 1991 -- Vim ==== Bram Moolenaar hatte **vi** an der Universität kennengelernt, und wollte ihn auch auf seinem heimischen AmigaOS nutzen. Als Startpunkt nahm Moolenaar die verfügbaren Quellen von **Stevie**; dieser hatte allerdings nicht alle Fähigkeiten von **vi**, und eine Reihe eigener Probleme. Im Laufe der Zeit hatte Moolenaar die Quellen so stark überarbeitet, dass kaum noch etwas vom Original übrig blieb. Er nannte diesen neuen Editor [[https://de.wikipedia.org/wiki/Vim | Vim]], was zunächst für "vi imitation" stand, und veröffentlichte ihn 1991 als freie Software. 1993 erschien die Version 2.0, und der Name **Vim** wurde umgedeutet zu "vi improved" (//verbesserter vi//). Mit der Zeit wurde **Vim** auf eine große Zahl anderer Systeme portiert, und ist heute einer der am weitesten verbreiteten Editoren. ==== 2014 -- Neovim ==== A fork of the Vim codebase, "//[[https://neovim.io/ | Neovim]] is a refactor, and sometimes redactor, in the tradition of Vim [...]. It is not a rewrite but a continuation and extension of Vim.//" It carries Vim into the 21st century. ---- [[03_modal | Nächstes Kapitel -- 3. Modales Editieren]]