Mi entorno para programación con i3-wm y Emacs

Alan Kay fue el verdadero visionario, el genio detrás de las cortinas. Trabajando en los laboratorios de Xerox Parc, inventó algo que nos suena mucho: el concepto de ventanas donde se ejecutan programas y la interacción con esas ventanas (moverlas, activarlas, cerrarlas,…) mediante algún dispositivo apuntador. Hoy día parece simple, pero en un mundo de arcanos comandos e informáticos de bata blanca, era una revolución.

Se dice, se comenta y se rumorea que Steve Jobs andaba de visita por Xerox y Alan le enseñó el invento, todo emocionado. Muchos días me imagino aquél encuentro en clave de “Celebrities” (Muchachada Nui) viendo como Steve habla con Alan manteniendo una cara de “Sí, no está mal” mientras esa pensando “ME VOY A FORRAR, ESTO LO ROBO YA”. Cosas parecidas se dicen de Bill Gates en una visita similar.

El caso es que gracias al curre de Alan, que por cierto también presentó genialidades como Smalltalk y el Dynabook (precedesor de las tablets) y la posterior comercialización por parte de estos sujetos, se hicieron enormemente populares las interfaces WIMP (Windows, Icons, Menus, Pointers). Pero ¿significa eso que son la herramienta idónea para cualquier trabajo? Definitivamente no.

Ya llegamos al final de la disgresión y al comienzo del tema. Después de muchos años de wimpear, una interfaz de este tipo para el ciclo de trabajo de un programador (escribir, cambiar de archivo, compilar, probar, tocar la base de datos, configurar…) se hace tedioso. Simplemente es demasiado trabajo extra apartar las manos del teclado para coger al roedor, apuntar a donde sea y hacer click, por no hablar de los diversos síndromes asociados a ese esfuerzo carpiano.

Desde que he llegado a esta configuración, no me pienso mover, ni para programar ni para administrar sistemas. Como gestor de ventanas que se aparta de tu camino, tenemos el excelente gestor tiling i3-wm (http://i3wm.org/). Lo único que tienes que hacer es ir abriendo terminales y el gestor de ventanas se ocupa automáticamente de colocarlas según el espacio disponible, puedes abrir las nuevas ventanas debajo o a un lado de la actual, puedes cambiarles el tamaño e incluso acepta ventanas flotantes (útil para GIMP). Todo se hace con el teclado. Si quieres ejecutar un programa, en lugar de navegar por interminables menús de grupos de programas, solo tienes que pulsar una combinación de teclas y empezar a escribir su nombre. Un enter y ahí lo tienes. Finalmente, el uso extensivo de escritorios virtuales y su excelente soporte multipantalla lo hacen ideal para estas lides.

Y en una de estas ventanas aparece el glorioso Emacs, un tanque con una curva de aprendizaje un poco elevada, pero que da un rendimiento excelente cuando es domado. No se por qué existe el debate Emacs VS. Vi, simplemente Vi no puede competir con Emacs ¡está en otra liga! no soporto los modos de Vi, sus combinaciones de teclas no tienen sentido… a lo máximo que llego es a abrir un fichero, editarlo y cerrarlo, nunca me ha gustado esa cosa.

No me gusta llevar Emacs mucho más allá de la instalación estándar, pero hay una serie de extensiones que uso para programación:

  • Web mode (http://web-mode.org/): excelentes funciones de coloreado y de indentado, está especialmente recomendado cuando en un mismo archivo se mezcla código de diferentes lenguajes. Esto pasar por ejemplo en las plantillas Blade de Laravel, donde se mezclan código PHP, HTML, Javascript y hasta CSS.
  • ido-mode (https://www.emacswiki.org/emacs/InteractivelyDoThings): Ya no puedo vivir sin él, era extremadamente tedioso cambiar de buffer en una ventana (cambiar de archivo), esta extensión te reemplaza la vista en el minibuffer cuando quieres abrir un archivo (C-x C-f) o cuando quieres cambiar de buffer abierto (C-x b) de manera que tiene funciones de autocompletado y navegación por el árbol de directorios muy avanzadas. Antes tenía que recordar exactamente el nombre del archivo al que quería ir y en qué directorio estaba, ahora no es necesario con el autocompletado.
  • Wind move (https://www.emacswiki.org/emacs/WindMove): te permite moverte entre ventanas mucho más fácilmente que con “C-x o” y de manera mucho más visual. Te puedes mover a la ventana de la izquierda, de la derecha, de arriba o de abajo mientras que eso no lo tienes garantizado con la combinación de teclas por defecto de Emacs para moverse entre ventanas.
  • Flycheck (http://www.flycheck.org/en/latest/): Con todo esto funcionando, solo me faltaba una pequeña ayudita para cuando algo iba mal con la sintaxis. Si pones un buffer en modo flycheck te irá cantando los errores de un buen número de lenguajes de programación (más de 40). Yo lo uso en modo básico, permitir que me vaya cantando los errores dinámicamente y abrir la lista de errores en otro buffer para cuando es difícil de localizar, pero tiene muchas más funciones. Es un imprescindible.

Con estas magníficas herramientas “primitivas” soy más productivo que nunca. El invento de Alan está bien para un uso ocasional, pero hay muchas tareas que se hacen mejor así. Si os fijais en muchos programas de TPV de comercios grandes (El Corte Inglés, Carrefour, Casa del Libro) son hoy en día todavía en estilo terminal, como cuando usábamos programas “gráficos” en MS-DOS. Lejos de ser un estorbo, es una ayuda. He visto a personal de Carrefour literamente volar entre las muchas opciones de un programa de gestión financiera, solo con el teclado. Así que ya sabéis, a partir de ahora a cotillear pantallas de comercios. Os dejo con una foto de mi entorno.

Entorno de trabajo i3 y emacs
Entorno de trabajo i3 y emacs

Responder

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *