Vi es una herramienta indispensable en cualquier sistema UNIX, siendo uno de los editores más poderosos y flexibles que existen, ha evolucionado a través de los años y han surgido muchas versiones de este, que agregan aún más funcionalidades. El más destacado de los descendientes del viejo editor es Vim, pero este no nació de la noche a la mañana. El camino recorrido hasta su surgimiento está poblado por otros hijos de vi que llegaron -en algunos casos- para quedarse. A lo largo de esta nota encontrarás una breve historia de cómo ha evolucionado esta familia de editores hasta llegar al editor estrella de la estirpe.
Editor | Publicado | Autor | Plataforma original |
---|---|---|---|
ed | 1971 | Ken Thompson | UNIX |
ex | 1976 | Bill Joy | UNIX |
vi (VIsual) | 1976 | Bill Joy | UNIX |
STEVIE (ST Editor for VI Enthusiasts) | 1987 | Tim Thompson | Atari ST |
Elvis | 1990 | Steve Kirkendall | MINIX |
Vile (VI Like Emacs) | 1990 | Paul Fox | MS-DOS, UNIX |
Vim (Vi IMproved) | 1991 | Bram Moolenaar | Amiga |
Nvi (New VI) | 1995 | Keith Bostic | 4.4BSD |
Vi
El editor vi (VIsual), fue presentado al mundo en 1976 por Bill Joy como una extensión del editor más común de aquellos tiempos: ex -También un aporte de Bill Joy- que a su vez era una versión extendida del editor ed -escrito por Ken Thompson entre 1969 y 1971-.
Aunque vi no es el ancestro más remoto de Vim, sí es muchas veces considerado la raíz su árbol familiar y fue uno de los primeros editores en introducir el concepto de modalidad, una de sus principales características, la cual divide a la gente en dos grupos: Por un lado están aquellos que se entusiasman y consideran a vi (y sus derivados, quienes heredan este mismo paradigma de edición) una herramienta poderosa; por otro lado están quienes lo consideran excesivamente complicado y por ello, lo descartan.
STEVIE
Computadora Atari S20ST
En 1987, Tim Thompson escribió un clon de vi llamado STEVIE (ST Editor for VI Enthusiasts) para la plataforma Atari ST, aunque esta versión tenía solamente un subconjunto de las características del vi original, al menos proporcionaba un ambiente familiar a los usuarios de vi que migraban a la plataforma ST de Atari. Uno sus principales aportes fue la implementación de los comandos para deshacer y rehacer cambios.
Luego de la liberación del editor, Tim Thompson dejó de trabajar en él. Poco después el desarrollo fue retomado por Tony Andrews quien al poco tiempo había portado el código a UNIX y OS/2, además de agregar otras características.
Aunque el desarrollo de STEVIE se detuvo al rededor de 1990, gracias a que sus autores liberaron el código fuente del editor, otros clones de vi han podido inspirarse y/o basarse en su trabajo.
Elvis
Modo de edición hexadecimal en Elvis ejecutándose en una interfaz gráfica.
STEVIE fue uno de los editores más populares, pero en un principio estaba lleno de bugs. Una de sus primeras desventajas fue que al abrir un archivo, lo copiaba completamente en la memoria RAM del equipo. Steve Kirkendall, quien por aquél entonces utilizaba el sistema MINIX, se percató de ello, así que reescribió el editor para editar pequeñas porciones de los archivos a la vez, un concepto que se conoce en computación como buffering; y lo liberó como la versión 1.0 de Elvis.
El siguiente gran cambio que se introdujo fue para eliminar otras limitaciones heredadas directamente de vi, por ejemplo: la longitud de las líneas de texto estaba limitada y solo se podía trabajar con un buffer a la vez. Además de esas mejoras, la versión 2 de Elvis agrega soporte para el resaltado de sintaxis, soporte para editar archivos remotos a través de los protocolos HTTP y FTP además de tener disponibles algunas interfaces gráficas simples para cada plataforma.
Elvis es la “versión” de vi que se distribuye junto con sistemas operativos como Slackware o MINIX 3. Su desarrollo está completamente detenido, aún así es una herramienta ampliamente utilizada y disponible para sistemas UNIX, GNU/Linux, MS Windows y OS/2.
Nvi
La mascota de BSD
Nvi –New vi– es resultado de un conflicto de licencias a principios de 1994 entre AT&T y el Grupo de Investigación en Ciencias Computacionales de la Universidad de California, Berkley (CSRG, por sus siglas en inglés) que les impedía a estos últimos distribuir vi junto con BSD. Por aquel tiempo, el editor Elvis ya estaba disponible libremente, así que Keith Bostic tomó su código fuente y en un lapso de dieciocho meses lo convirtió en un clon compatible con vi casi en su totalidad, basándose también en el editor ex. Para la versión 4.4 de BSD vi había sido sustituido completamente por Nvi. Al día de hoy es la versión oficial de vi utilizada en sistemas derivados de BSD: NetBSD, FreeBSD, OpenBSD, DragonFly BSD, etc.
Con respecto del editor vi original, Nvi cuenta con varias características extra, como: manejo de múltiples buffers a la vez, uso extendido de expresiones regulares y soporte para bases de datos CScope entre otras.
Vile
Múltiples ventanas en el editor Vile
Este no es propiamente un clon de vi. El editor Vile (Vi like Emacs) trataba de combinar lo mejor de dos mundos: la edición modal de vi y las características de Emacs. El proyecto fue iniciado a mediados de 1990 por Paul Fox, basándose en el código publicado del editor MicroEmacs, la idea era modificarlo para agregar la modalidad característica de vi.
A pesar que MicroEmacs no aportaba todas las funcionalidades del Emacs de GNU, si proporcionaba soporte para líneas largas y edición de múltiples archivos en múltiples ventanas al mismo tiempo, características ausentes en vi pero muy apreciadas por los programadores.
Vim
Logotipo de Vim
Vim (Vi IMproved) vio la luz por primera vez en noviembre de 1991 gracias a Bram Moolenaar. La primera versión, al igual que la de Elvis, se basó en el código de STEVIE. Esta solo estuvo disponible para la plataforma Amiga, dado que era una de las más populares por aquel tiempo. Dos años después, fue liberado un port para UNIX.
Hoy en día es posible, además de editar archivos a través de múltiples ventanas, el manejo de pestañas, resaltado de sintaxis para más de doscientos lenguajes de programación diferentes, autocompletado, integración con una amplia gama de compiladores y depuradores, y por si fuera poco proporciona su propio lenguaje de scripting así como soporte para Perl y Python entre otros. La posibilidad de escribir scripts para Vim le da al usuario el poder personalizar el editor e incrementar sus capacidades sin tener que modificar el código fuente ni recompilarlo.
De los clones de vi existentes, el más compatible de todos, es precisamente Vim.
Espero que esta publicación te haya aportado algún dato que quizás antes no conocías sobre vi, Vim y su origen, en la siguiente entrada de esta serie empezaré un tutorial para dominar este editor desde los primeros pasos hasta el aprovechamiento de las características más avanzadas de esta herramienta. Hasta entonces.
Referencias
- “Learning the Vi and Vim Editors”, capítulo 16
- “Hacking Vim”
- “Editores disponibles en UNIX”
- Para muchas cosas, Wikipedia ha sido mi punto de partida.