¿Por qué los usuarios de Emacs lo usan para todo? | Programador Web Valencia

¿Por qué los usuarios de Emacs lo usan para todo?

6 minutos

Emacs

Es una pregunta que todo usuario de Emacs debe hacerse una vez en la vida. ¿Por qué uso Emacs para todo en lugar de diferentes software para tarea concreta? Lo más práctico es lanzar una IDE independiente para programar, un cliente de correo para leer los emails, un navegador web para navegar por internet, un explorador de archivos para gestionar los ficheros, un terminal para ejecutar comandos Unix, un software para gestionar tus notas, un Office para los documentos, etc. Divide y vencerás. Pero no, la comunidad de Emacs tiende al monolito. Y yo me pregunto: ¿por qué?

La respuesta más generalizada es: porque puedo. Si no deseas profundizar más en el asusto, es lícito quedarte con una conclusión rápida. Por mi puedes dejar de leer. ¿Te paso algún repositorio de awesome-emacs para seguir alimentado tu codicia centralizadora? En caso contrario, te invito a que me acompañes en un viaje donde intentaré explicar las principales razones por las cuales creo que los usuarios de Emacs acaban metidos en un matrimonio para toda la vida.

Razón 1: Software variado y de calidad

¿Emacs satisface todas las necesidades de un sistema operativo? Es una pregunta injusta. No olvidemos que Emacs es solo un interprete de Elisp ejecutándose en un sistema operativo. Tal vez una máquina virtual, como Java, sería una comparación más justa. Por muchas bromas que encuentres en la red, Emacs solo es un software compilado en una plataforma. Ni puede acceder al hardware ni puede funcionar por si mismo. La confusión radica en su tremendo ecosistema de software.

Veamos una pequeña lista del software que uso en Emacs. Alguno a diario y otros de manera ocasional:

  • Gestionar mis ficheros: Dired.
  • Navegar por internet: Eww.
  • Leer emails: Gnus, mu4e.
  • Escribir código: LSP Server.
  • Gestionar mis servidores: TRAMP.
  • Interactuar con mis redes sociales o foros: Mastodon, HackerNews, etc.
  • Gestionar repositorios Git: Magit.
  • Chatear: IRC, Slack, Discord, Telegram, etc.
  • Ejecutar comandos Unix: vTerm.
  • Crear documentos, presentaciones o hojas de calculo: Org-mode.
  • Gestionar mi agenda: Calendar.
  • Leer noticias: Gnus y Elfeed.
  • Jugar: Tetris, Snake, Solitario, aventuras conversacionales (Máquina Z), etc.
  • Lector de ebooks: Nov.
  • Gestionar mis contraseñas: Pass.
  • Ver los procesos que más consumen: proced.
  • Organización de notas: Org-roam.
  • Gestionar mis proyectos: Projectile.
  • Navegar por el protocolo Gemini: Elpher.
  • Escuchar música: EMMS.
  • Manipulación simple de imágenes: eimp.
  • Lanzar servidores Web y WebSockets: emacs-web-server, Elnode, etc.
  • Generar sitios estáticos: one.el, org-publishing, etc.
  • Interactuar con ChatGPT: chatgpt-shell.
  • Calculadora: calc.
  • Aprender programación funcional: Elisp, Common Lisp, Clojure, etc.
  • Y otros software como: Visualizador de imágenes, creación de QRs, manipular bases de datos, etc.

Insisto, es MI lista. Hay usuarios que van más allá, gestionando prácticamente todo: finanzas, composición musical, creación de diagramas, CRM, etc. Aunque también hay usuarios que solo buscan utilizar un solo programa, como puede ser Org-mode, y no necesitan nada más.

Pero incluso puedes usarlo como editor de texto plano (ironía-mode). ¿Te gusta Vim? Ok, instala Evil-mode y apenas notarás la diferencia. ¿Editas más con Nano? Lanza Easy-mode. Su versatilidad es inconmensurable. Hay que dar las gracias a una comunidad sólida y activa que lleva medio siglo desarrollando Emacs.

Respecto a la calidad, he probado decenas de clientes de RSS en mi vida y ninguno ha funcionado también como Elfeed. La misma sensación he experimentado con el cliente de Git (Magit), lector de ebooks (Nov) o generador de sitios estáticos (one.el). Solo por ellos ya merece la pena darle una oportunidad.

Razón 2: Sencilla interfaz para crear aplicaciones

Otra capacidad que no podemos ignorar es la posibilidad de crear nuestras herramientas. Emacs es una excelente interfaz. Puedes prototipar ideas rápidamente, además de automatizar muchas otras. Por ejemplo, en mi caso tuve una problemática: la necesidad de crear un sistema de newslettering: gestión de suscriptores, generación de HTML para los correos a partir de Markdown, envío masivo de emails (y en paralelo), analítica, etc. Con un poco de Elisp (su sistema de scripting que hablaré más adelante) y uniendo diferentes capacidades de Emacs pude montarlo sin mucha dificultades. Independientemente del lenguaje, ¿cuanto tiempo hubiera requerido construir todo desde cero? Posiblemente más de un par de horas. Con la ventaja de no pagar ningún VPS ya que todo funciona desde mi propio equipo. Y lo más importante, esta integrado en mi editor como una funcionalidad más a ejecutar.

Otra maravilla es TRAMP, una herramienta de Emacs para editar archivos remotamente y gestionar servidores. ¿Cuantas tareas de mantenimiento puedes simplificar con ello? Incluso crear CI/CD para tus repositorios, un monitor de recursos o un sistema de alertas. Si inviertes suficiente tiempo en aprender Emacs/Elisp, y entras en la dinámica de montar aplicaciones a medida, ¿por qué no usarlo para hacer tu vida más sencilla? Por otro lado, sabes que tus scripts funcionarán en cualquier sistema operativo que tenga Emacs instalado, sin problemas de compatibilidad (a los hechos me remito: muchos paquetes llevan funcionando décadas sin problemas).

Razón 3: Elisp, un lenguaje de scripting poderoso

Elisp es el lenguaje de programación de Emacs, un dialecto de Lisp. Pero lo más destacable es su paradigma es funcional. ¿Y qué tiene de especial? (es la típica pregunta que se haría alguien que no ha tocado ningún lenguaje funcional ni ha coqueteado con sus virtudes). Elisp es expresivo, usa funciones puras de primera clase, fácil de testear, legible y una sintaxis rápido de comprender. También es un lenguaje sólido al llevar a sus espaldas lecciones aprendidas durante 50 años. Aunque Emacs no existiera, sería un lenguaje que merecería la pena aprender. A todo lo anterior puedes suma su exquisita integración con las capacidades de Emacs.

Razón 4: No tiene competencia

No hay ningún software que se le parezca. Tal vez una IDE como VSCode con sus sistema de paquetes y extensiones pueda lograrse, con esfuerzo y tiempo, algún acercamiento. Aun así estaremos a años luz de Emacs en aspectos de rendimiento, espacio en disco, compatibilidades, software preinstalado, scripting y configuración de la interfaz. Es único en su especie.

Razón 5: Personalización enfermiza

Hay muy pocos elementos que no podamos adaptar a nosotros, tanto visuales como de comportamiento. Si quieres adulterar el comportamiento natural de Emacs, se han creado capas de abstracción para las ventanas (EXWM), pestañas (centaur-tabs), navegación (como puede ser el emulador de Vim: Evil), movimiento del cursor (ace-jump), sistemas de atajos (Hydra), etc. Por supuesto, en tu mano esta personalizar cada aspecto ayudándote de su documentación.

Para iniciados, hay disponibles configuraciones automatizadas, como puede ser Spacemacs, y preconfiguradas, como Doom, que prácticamente crean un editor nuevo por encima de Emacs. Ideales para usuarios que quieran suavizar la entrada con una experiencia más guiada. Aunque al final acabarás creando tu propia configuración, ya que es una experiencia muy gratificante.

Razón 6: Curva de aprendizaje divertida

Sin duda, donde más tiempo pasa un usuario de Emacs es en su configuración, organizando y ampliando sus características. Es un proceso divertido que nunca termina ni deseas que lo haga. Siempre hay un elemento a mejorar, o un software nuevo a descubrir y opciones que desconocías a implementar. Un proceso que se retroalimenta, te permite aprender y mejorar como usuario. Cuando más tiempo inviertes, menos te quieres ir de Emacs.

Conclusiones

¿Por qué uso Emacs para todo? Porque puedo y porque es una herramienta versátil, con una comunidad activa, divertida de aprender, software variado con gran calidad, sin competencia, Opensource y personalizable. Y, por si fuera poco, su curva de aprendizaje es muy larga, que no alta, lo que permite disfrutar de la experiencia durante años. Para perfiles que les gusta aprender, programar y personalizar. Una herramienta que le acompañará durante toda tu vida.

En otras palabras, Emacs más que un editor es una compañera de viaje.

PD: Artículo escrito, subido a Git, generado HTML y desplegado a servidor Web desde Emacs.

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me invitas a un café? ☕

Puedes hacerlo usando el terminal.

ssh customer@andros.dev -p 5555

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...