Vim y Emacs: sin novedad en el frente

Entre las guerras santas más legendarias de las que tenemos conciencia está la guerra de editores. Vi/Vim contra Emacs. Esta es particularmente divertida por que ambos son software libre y con capacidades muy altas.

Esto se remonta a muchos años atrás. Emacs fue desarrollado por Richard Stallman en los setenta, liberado aproximadamente 35 años atrás. Vi tiene más o menos la misma edad, creado por Bill Joy. Vim por el contrario, es algo más reciente y surge de la necesidad de Bram Moolenar de crear un clon de Vi para Amiga en 1991.

¡Qué retro! Editores de la edad de piedra, cuando la vida era más simple. Y los seguimos usando por que evolucionan y se adaptan a los tiempos. Vim e Emacs usan modernas interfaces en GTK, tienen sus propios lenguajes de extensión, gestores de paquetes; entre otras cosas que los ponen entre los editores modernos.

¿Para qué los uso?

Vamos a poner una circunstancia completamente hipotética. Un Gúgol es una palabra matemática que define a un uno seguido de cien ceros. ¿Cómo lo escribimos en un editor de texto?

La primera solución que se me ocurre es escribir un uno y presionar la tecla 0 hasta que el contador de columnas me ponga en 101, por que 101 caracteres debe medir esta expresión. Estamos suponiendo que editamos esto en un editor de texto competente, que disponga de una barra de estado para mostrar estas cosas.

Ahora, se me ocurre una solución más simple:

i1 ESC 100a0 ESC

Por supuesto que esta solución requiere de Vim, o por lo menos de Vi. El comando es bastante simple, y es como si le dijéramos a Vim: Estando en el modo normal, inserta 1 y regresa al modo normal. Ahora inserta después del cursor cien veces 0 y regresa al modo normal. Vim cumplirá nuestra orden sin chistar.

Complejidad

Esta solución suena extremadamente compleja, y lo entiendo. En primera por que estamos tratando con el concepto de un editor modal. Pero hay casos en que es mucho más útil de lo que parece.

Digamos que tengamos una lista de compras. Vamos a ir a la tienda y queremos escribir lo que vamos a traer. Recordemos que es algo hipotético, nadie debería llevar su computadora a la tienda para ir por comida. Como sea, esta es nuestra lista:

1 Plátano
4 manzanas
2 kilos de azúcar
1 Litro de agua

 

Es una lista de compra muy sencilla. Pero le vamos a hace unos arreglos. Primero, creo que unos plátanos más no estarían mal. Como nos gusta la estética, cambiaremos la minúscula en manzanas para dejarla como Plátano y sustituiremos los nombres de las unidades por sus abreviaturas.

Así que empecemos. Como queremos un respaldo de nuestra lista original, hacemos una copia con 4yy y la pegamos más abajo con p. Presionamos un par de veces Ctrl-a para incrementar el número de plátanos y nos desplazamos al fin de la siguiente palabra con e. Bajamos a la segunda línea, hacemos un Fm para llegar a la palabra manzanas y presionamos ~ (AltGr-4 en mi teclado) para que la letra cambie a su versión mayúscula. Hacemos un j para bajar hasta la siguiente línea y aparecemos en la k de kilos con b. Salimos del modo normal tecleando cw y escribiendo la palabra de reemplazo para kilos, que va a ser kg. Presionamos ESC, regresando al modo normal y otra vez j para hacer lo mismo con Litro. Listo. Así se ve nuestra lista ahora.

3 Plátanos
4 Manzanas
2 kg de azúcar
1 L de agua

El poder

Resumamos la acción anterior en esto:

4yy G p 2Ctrl-A e Fm ~ j b cw kg ESC j b cw L ESC

He respetado algunos espacios para hacerlo comprensible, pero normalmente no se hace. Esta orden propia de un robot nos hace pensar mucho en su utilidad. Pero seguro que es más rápido hacer esto que moverte con el ratón, seleccionar, copiar, pegar, borrar y demás.

Los editores de tan larga trayectoria como Vim o Emacs pueden hacer cosas como estas por que han sido desarrollados por años y con ideas muy claras de como hacer las cosas.

Las curvas de aprendizaje

Sí, son empinadas. Pero para eso están iniciativas como Cream, que proporciona un entorno completamente listo para usar Vim desde el principio sin tener que pelearse con los modos y eso, y guru-mode, una extensión de Emacs que -hasta donde sé- ayuda a los principiantes.

El guru-mode es parte de Emacs Prelude, una colección de extensiónes qué te la ponen fácil si quires aprender.

Las extensiones

Ya que son editores más extendidos que muchos editores modernos y disponen de lenguajes de extensión propios, puedes encontrar temas de colores, plugins y demás. Cosas tan interesantes hay por ahí como:

Parece que es más fácil (o más placentero) programar extensiones en Emacs Lisp que en VimScript. Digo, es un lenguaje funcional interpretado por un núcleo hecho para eso, contra un lenguaje imperativo hecho para configurar y extender.

Conclusión

¡Dales una mirada! No te cuesta nada, ambos son software libre distribuido gratuitamente. Deben estar en los repositorios de todas las distribuciones conocidas por el ser humano e incluso pueden encontrar en maléficos sistemas privativos. No hay mucho más que pedir.

Y por último, si se extrañaron por que puse una e antes de Emacs en el título en vez de una y, es por que me suena mejor. Algo así como /í-macs/. Pude ahorrarme problemas ortográficos cambiando la posición, pero me gusta mucho Vim para hacerle eso :D