¿Deseas Unirte a la Iglesia de Emacs?
Probablemente si has leído esto desde hace un tiempo, has notado de que usado consistentemente Vi para todo tipo de edición de textos, desde mi blog hasta cuando me toca picar un poco de código, y la verdad es que me gusta harto vim, a tal punto que busqué formas de extender sus bindings en otros programas e incluso en mi administrador de ventanas Sway y dwm. Pero por una curiosidad que venía creciendo decidí probar otro programa que a menudo se le tiende a comparar: Emacs
Emacs: El editor de texto programable
Emacs es un editor credo por el gigachad Richard Stallman por allá en 1984, es un software totalmente libre, esta presente en todas las principales plataformas (Windows, MacOS, GNU/Linux), y se caracteriza por ser también un interprete de ELisp (Emacs Lisp) que es basicamente un lenguage de programación derivado de la familia de Lisp, esto lo hace totalmente “hackeable” para cualquiera que quiera abrirse a editar sus configuraciones, ese alto nivel de customización ha logrado que haya una comunidad que este desarrollando librerías bastante convenientes para Emacs
Hay varias cosas enormemente destacables sobre Emacs, pero tal vez una de las cosas que la comunidad más se enorgullece, es que puedes usarlo para un montón de cosas: escribir notas, programar, organizar una agenda, administrar proyectos, leer libros, escuchar música, leer las noticias a través de un RSS, chatear en IRC, jugar Tetris, etc. Todo esto bajo el techo que la iglesia de Emacs puede proveer. Es por esto que algunos tienden a asociar a Emacs como un sistema operativo
Vim vs Emacs
Por alguna razón las comunidades de programadores les gusta comparar estos editores, aunque a mi parecer hay demasiadas diferencias, que uno puede preguntarse si los casos de uso son completamente los mismos, la comparación entre vim e Emacs es como el buen cuchillo y la cocina, en ese sentido mis razones para probar Emacs:
- Lisp: Desde hace un tiempo tenía un interés en aprender algún lenguage de la familia de Lisp, es un lenguage imperativo/funcional, altamente flexible, de hecho Scheme otro de los lenguajes Lisperos. era usado como introducción a CS en el MIT, y uno de los libros más cabezones fueron usados como base de enseñanza, Structure and Interpretation of Computer Programs alias SICP, ha sido altamente influyente para este tema. Entonces ciertamente vale la pena darle una vuelta. Un código en Elisp se ve algo como esto:
(setq eshell-prompt-function
(lambda nil
(concat
(eshell/pwd)
" $ ")))
como puedes notar los paréntesis son una parte previo a la definición de la función y al final, lo hace un tipo de lenguage de programación bastante peculiar en estos tiempos. No es lo único especial de este tipo de lenguajes y hay muchas opiniones al respecto, pero si estás acostumbrado a los lenguajes tipo Python, C o Java, entonces Lisp te va a proveer otro tipo de paradigmas que podrás contrastar.
-
Ambiente productivo: Usualmente cuando quieres hacer un ambiente productivo en vim, tienes que usar Tmux como multiplexer, y luego concatenar otros programass basados en termimnales, usarás Newsboat para noticias, Ncmpcpp + Mpd para música, Mutt para correos electrónicos, Zathura para leer PDFs, etc. No es un mal workflow, pero tiene sus limitaciones, por ejemplo, si quieres leer blogs que tienen imagenes, Newsboat estará limitado, también tendrás que setear los shortcuts para estos programas para que sean afines a Vim, o los colores de cada software en caso de que te importe lo estético, siento que en general es más simple de abordar esto en Emacs.
-
Org Mode: Probablemente si hay alguien que me pregunte si vale la pena usar Emacs a pesar de que no programe, probablemente le diré que si, solo por una cosa: Org Mode. Creo que todos independientes del tipo de trabajo o estudio que hacemos, tenemos algunas necesidades de tomar notas, agendar eventos, administrar proyectos con tareas y deadlines, entre otros. Todo eso lo puedes hacer en Emacs con Org Mode, la herramienta es altamente customimizable y es parte integra del ecosistema de Emacs, y creo que no hay ningún usuario de Emacs que no quiera aprovechar los beneficios de este ecosistema.
Algunas impresiones no tan positivas de Emacs.
Por sobre todo Emacs es un gran software, este artículo lo he estado escribiendo en Emacs, además de otras cosas, y ha sido divertido por sobre todo, pero algunas cosas que vas a tener que considerar para empezar:
-
Poco estético al inicio: Si instalas Emacs y vas desde el principio, verás una introducción con el logo bastante feo, además de unos links a tutoriales, etc. No lo encontrarás atractivo para nada, dependerá de ti, ir customizandolo para que quede un poco más agradable visualmente
-
Nuevos atajos de teclado que aprender: Si vienes de vim, probablemente ya estas acostumbrado al sistema modal de edición, esa memoria muscular tendrá que enfrentar un nuevo sistema de edición y navegación que no tiene mucha relación con Vi, verás que tendrás que usar la tecla Ctrl y Alt para llamar a distintos modos y ejecutar comandos acordes, puede que cueste al principio, pero también tiene sus fortalezas. Además existe una librería para emular los atajos de teclado de vim, llamado evil mode, lo cual puede ayudar a que inicies en Emacs, aunque yo no lo recomiendo, en mi opinión vale la pena que empieces con los atajos originales hasta que logres tener un entendimiento de ellos, y después puedes decidir usar evil mode.
-
Tiempo mayor en start ups: vim es rápido, Emacs en esencia se toma unos segundos dependiendo de la cantidad de plugins y otras customizaciones que le hayas hecho, lo cual no lo es tanto, pero por lo mismo, preferirás tener una sesión abierta todo el tiemmpo antes que estar abriendo y cerrandolo constantemente, no es algo tan grave en mi opinión, pero puede que haya gente que no le agrade mucho.
¿Qué hay de Doom Emacs, Space Emacs y otros amigos?
Estas distribuciones de Emacs son basicamente Emacs con ciertas opiniones de plugins y shortcuts ya establecidos, no tengo experiencia con esas distribuciones, pero tampoco lo recomiendo mucho, a mi parecer es mejor de que vayas creando tu propio config desde 0 y lo vayas adaptando poco a poco a lo que realmente necesitas, eso también te hará más consciente de lo que hace tu sistema.
¿Cómo hago entonces para partir?
Te recomiendo instalar la distribución básica de Emacs, luego:
- Lee el tutorial unas cuantas veces y acostumbrate a usar esos atajos de teclado, por unos cuantos días.
- También puedes leer el manual que hizo GNU para Emacs, que tiene un cierto material que complementa al tutorial.
- Aprender a navegar dentro de tu directorio con dired, abrir archivos, editarlos y guardarlos.
- Entender y quedar cómodo con lo de abrir y cerrar ventanas, operar con los buffers
- Explorar otras funcionalidades construídas internamente en Emacs como navegar en la web con eww, navegar pdfs, etc.
- Comienza a editar tu archivo init.el para agregar nuevas customizaciones a tu Emacs, como por ejemplo el tamaño de la letra, esquema de colores, etc
- Explora Org Mode
- Sigue disfrutando.
La verdad es que puede que mi experiencia con Vim y Neovim me hayan dado cierta experiencia de como usar Emacs, eso no quiere decir que no he quedado a veces estancado con algún asunto, pero dentro de todo el proceso ha sido entrete y la verdad me llevado una grata experiencia usando este software. Desde que empecé con el tutorial hasta ahora me ha tomado una semana y media mas o menos de jugar en mi tiempo libre, así que demás que cualquiera puede usarlo con cierta proficiencia en un par de semanas a un mes probablemente.