Este artículo explora la historia de vi, cómo funciona, por qué es tan difícil de usar para los novatos y por qué, pese a todo, sigue siendo una herramienta esencial para administradores de sistemas y usuarios avanzados.
En el mundo de Unix y Linux, pocos programas tienen una reputación tan intimidante como vi, el legendario editor de texto. Rápido, minimalista y extremadamente potente, vi es al mismo tiempo una herramienta venerada y temida. Mientras los editores modernos ofrecen interfaces intuitivas y menús accesibles, vi sigue fiel a una forma de trabajar que requiere memoria muscular y comandos precisos.

🕰️ Historia de vi
El editor vi (abreviatura de Visual) fue creado en 1976 por Bill Joy, quien más tarde cofundaría Sun Microsystems. Fue desarrollado originalmente para el sistema BSD Unix, como una interfaz visual mejorada para el editor ex, que a su vez provenía de ed, el primer editor de Unix.
A diferencia de los editores modernos que nacieron en la era de las GUI (interfaces gráficas de usuario), vi fue creado para terminales de texto, donde cada comando debía ser eficiente, rápido y sin desperdiciar ciclos de CPU.
⚙️ ¿Cómo funciona vi?
A diferencia de la mayoría de los editores actuales, vi opera en diferentes modos, lo cual puede confundir enormemente a los principiantes.
Los tres modos principales:
- Modo normal (comando):
- Es el modo predeterminado al abrir vi.
- Aquí puedes moverte por el texto, eliminar líneas, copiar, pegar, etc.
- Comandos como
dd
,yy
,p
,x
, etc.
- Modo de inserción:
- Se accede presionando
i
,a
,o
, etc. - Aquí puedes escribir texto normalmente.
- Para volver al modo normal, se presiona
Esc
.
- Se accede presionando
- Modo de línea de comandos (ex mode):
- Se activa presionando
:
desde el modo normal. - Aquí puedes guardar (
:w
), salir (:q
), buscar, reemplazar, etc.
- Se activa presionando
😰 ¿Por qué es tan difícil de usar?
Para muchos usuarios modernos, vi representa una barrera de entrada, y estas son las razones principales:
1. No tiene menús ni ayudas visuales
- No hay botones ni interfaz gráfica.
- Los comandos no se muestran en pantalla.
2. Requiere conocer los comandos de memoria
- No es intuitivo. Para insertar texto hay que presionar
i
, para salir hay que presionar:q!
, para guardar:w
, etc.
3. No da retroalimentación inmediata
- Si haces algo mal, puede que no veas mensajes de error claros.
- Es fácil quedarse “atrapado” sin saber cómo salir (
Esc
,:q!
).
4. No hay ratón ni selección visual
- Todo se hace con el teclado. No puedes seleccionar texto con el mouse como en editores como VSCode o Notepad++.
🧠 ¿Por qué sigue siendo utilizado?
Pese a su dificultad, vi no ha desaparecido. De hecho, aún se incluye por defecto en prácticamente todas las distribuciones Unix y Linux.
Ventajas clave:
- Ligero y rápido: Ideal para sistemas con pocos recursos o conexiones remotas.
- Disponible en casi todos los sistemas Unix/Linux: Siempre está ahí, incluso en sistemas mínimos o de recuperación.
- Poderoso: Cuando se domina, permite editar archivos de forma extremadamente eficiente.
- Compatibilidad total con terminales: No necesita entorno gráfico.
- Scriptable: Puede integrarse en scripts para edición automática.
🕰️ El mundo de los terminales en los años 70
Cuando vi
fue creado en 1976 por Bill Joy, los programadores trabajaban en sistemas Unix sin interfaces gráficas, sin mouse y sin pantallas de texto interactivas como las conocemos hoy.
La mayoría de las computadoras no tenían pantallas como tal, sino terminales de texto tontos conectados por cables (RS-232). Estos dispositivos, llamados VT100, ADM-3A, entre otros, solo podían mostrar caracteres, no gráficos. Además, muchas veces la red era lenta, el CPU era compartido, y cada pulsación de tecla podía ser costosa.
En ese mundo, cada byte contaba. Se necesitaba:
- Un editor ultra liviano.
- Que no dependiera del mouse (porque no existía).
- Que usara comandos cortos (por eficiencia y velocidad).
- Que se pudiera navegar y editar con solo el teclado.
Así nació la idea de los editores por modos, como ed
, ex
y luego vi
.
🛠️ Modos de operación: una solución a la falta de controladores
La razón por la que vi
tiene modo normal, modo de inserción y modo de comandos, es porque los terminales no podían distinguir entre escribir texto y dar órdenes al editor.
Por ejemplo, si presionabas la tecla j
, ¿significa que quieres escribir la letra «j» o moverte hacia abajo? La solución fue dividir la experiencia en modos:
- En modo normal,
j
es «abajo»,h
es «izquierda». - En modo inserción, todo lo que escribes se interpreta como texto.
Este enfoque ahorraba procesamiento y evitaba ambigüedades, permitiendo al editor ser muy rápido y estable.
⌨️ Teclados minimalistas: sin teclas de flecha, sin F1-F12
Los teclados de la época no tenían flechas de dirección. El editor vi
fue diseñado para que los usuarios se movieran usando las teclas:
h → izquierda
j → abajo
k → arriba
l → derecha
Esto se debía a que muchos terminales (como el ADM-3A, que usaba Bill Joy) tenían estas letras impresas directamente como flechas. Literalmente, esos eran sus botones de navegación.
Además, los teclados no tenían teclas Control, Alt, o Escape bien definidas o universales, así que se reutilizaban letras para comandos (dd
, yy
, p
, etc.).
💾 Eficiencia: El diseño vi es como el ajedrez del texto
Una vez que aprendes sus comandos, vi
es extremadamente eficiente. Por ejemplo:
d3w
: borra tres palabras.:1,$s/foo/bar/g
: reemplaza todas las ocurrencias de «foo» por «bar».ggVG
: selecciona todo el archivo.
Esto era ideal para programadores y sysadmins que necesitaban hacer cambios rápidos en archivos grandes, sin usar muchos recursos del sistema.
📦 Incluido en todas las distribuciones Unix/Linux
Una de las razones por las que vi
sigue vigente es que, al ser tan pequeño y no depender de ninguna librería gráfica, puede incluirse en cualquier sistema Unix-like, incluso en modos de rescate, shells en vivo, contenedores Docker mínimos, etc.
Así, se convierte en una herramienta de supervivencia universal: si sabes vi
, puedes editar archivos en cualquier sistema Linux, BSD, Solaris, etc.
🧬 Filosofía Unix
vi
encarna perfectamente la filosofía Unix:
- Haz una cosa bien.
- Usa herramientas pequeñas, rápidas y combinables.
- Aprovecha el entorno de texto.
Por eso vi
no busca ser «amigable»: busca ser poderoso, eficiente y estable. Y lo ha conseguido durante más de 40 años.
🆚 Hoy: ¿por qué se sigue usando?
A pesar de su curva de aprendizaje:
- Muchos programadores avanzados lo prefieren por su velocidad.
- Administradores de sistemas lo usan porque siempre está disponible.
- Está en casi todos los sistemas Linux (aunque hoy muchos usan
vim
oneovim
). - Puedes automatizar tareas de edición complejas rápidamente.
🧰 ¿Qué es Vim y cómo mejora vi?
Vim (Vi Improved) es una evolución directa de vi, desarrollada en 1991 por Bram Moolenaar. Mantiene la compatibilidad con vi, pero añade muchas características modernas:
- Colores sintácticos.
- Undo/redo múltiples.
- Soporte para plugins.
- Buscador y autocompletado.
- Modo visual (selección de texto como en editores gráficos).
Muchos usuarios que aman la filosofía de vi, pero quieren una mejor experiencia, optan por Vim o Neovim.
🆚 Comparación con editores modernos
Característica | vi | VSCode / Sublime / Gedit |
---|---|---|
Interfaz gráfica | ❌ No | ✅ Sí |
Soporte de ratón | ❌ No | ✅ Sí |
Barrera de entrada | 🚫 Alta | 🟢 Baja |
Peso y recursos | ✅ Muy bajo | ❌ Relativamente alto |
Disponibilidad | ✅ Casi universal | ❌ Depende de la instalación |
Velocidad | 🚀 Instantáneo | 🐢 Variable |
Personalización | 🟡 Limitada (en vi) | ✅ Plugins, temas, etc. |
🏁 Conclusión
vi no es un editor para todos, y eso está bien. No fue creado para ser bonito, ni fácil, ni gráfico. Fue creado para ser rápido, eficiente y siempre disponible. Su diseño minimalista y sus comandos crípticos tienen sentido en el contexto de los sistemas Unix clásicos y siguen teniendo valor hoy para muchos administradores de sistemas, desarrolladores y usuarios de terminal.
Aprender vi no es obligatorio, pero saber usarlo aunque sea lo básico, puede salvarte en muchas situaciones técnicas.
✅ Tip final para no quedar atrapado:
Si alguna vez entras a vi por error, presiona:
Esc
:q!
…y saldrás sin guardar 😅