¿Todavía hay gente que usa Emacs?
(jmmv.dev)- Tras iniciarse en Linux en 1997, alternó entre Vim y Emacs hasta que en 2015 se pasó a VSCode e IntelliJ, para luego volver en 2022 a Doom Emacs dentro del entorno de Linux VM remota de Snowflake
- VSCode, con su UI moderna, tamaño reducido, configuración basada en JSON e integración LSP para Go y Rust, facilitó el aprendizaje y el desarrollo; para Java, IntelliJ era la opción más realista
- En las antiguas Linux VM de Snowflake, el trabajo se centraba en escribir shell scripts y archivos de build de Bazel, y como el trabajo basado en SSH encajaba mejor que un entorno gráfico remoto, Emacs volvió a ser necesario
- Doom Emacs hace que Emacs se sienta como un IDE gracias a sus valores predeterminados razonables, integración de lenguajes, atajos estilo Vim, menús emergentes basados en la tecla space y una estructura de configuración simple
- La razón principal para seguir usando Emacs es poder mantener el mismo entorno de desarrollo en cualquier lugar solo con shell, tmux y Emacs: MacBook, laptop Linux, estación de trabajo Linux en la nube o servidor FreeBSD
De los IDE de DOS/Windows a un editor de Linux
- Comenzó en Linux alrededor de 1997 con Caldera OpenLinux 1.1
- Antes de eso usaba mucho Borland Turbo C++ y Visual Basic, así que ya estaba acostumbrado a los IDE bien pulidos de esa época
- Con dos libros introductorios sobre Linux conoció Vim y Emacs, y ambos aparecían presentados como opciones avanzadas
- Aunque los IDE que usaba antes parecían más completos, aprendió el uso básico y los tutoriales de Vim y Emacs por separado
- Hasta alrededor de 2015 fue alternando entre Vim y Emacs
- Emacs se adaptaba mejor a sesiones largas de programación
- Vim destacaba al moverse rápido entre muchos archivos y hacer cambios, como en tareas de pkgsrc
Por qué se pasó a VSCode e IntelliJ
- Aunque Vim y Emacs funcionaban lo suficientemente bien, la integración de lenguajes era débil y eso despertó interés por editores más modernos
- Al pasarse a macOS también probó Atom y Brackets, pero le parecieron frágiles y pesados por la cantidad de funciones y configuración
- VSCode, que apareció en 2015, se sintió desde el principio como una herramienta adecuada
- Tenía un aspecto moderno y era relativamente ligero
- En ese momento el editor de configuración usaba archivos JSON en lugar de paneles de ajustes, y eso se sentía fácil de controlar
- Al empezar a aprender Go y Rust, la integración LSP de VSCode para cada lenguaje fue de gran ayuda
- autocompletado de código
- resaltado de errores en tiempo real
- mayor velocidad de aprendizaje
- En Google, al trabajar con proyectos Java basados en Bazel, IntelliJ era la elección natural
- También intentó desarrollar Java con Emacs, pero IntelliJ era tan bueno que, en la práctica, la opción realista era IntelliJ
- En Microsoft, al trabajar con una base de código en C++ y máquinas remotas con Windows, siguió usando VSCode con el plugin de Vim
- Mucha gente trabajaba directamente en la máquina remota vía RDP
- Prefería más ejecutar VSCode en el escritorio local y conectarse a la máquina remota por SSH
Qué lo hizo volver a Doom Emacs en Snowflake
- Tras cambiarse a Snowflake en 2022, el desarrollo se hacía dentro de una antigua Linux VM, y el trabajo diario consistía en escribir shell scripts y archivos de build de Bazel
- En ese entorno, VSCode e IntelliJ no resolvían realmente el problema, y como tampoco le gustaban las limitaciones de los entornos gráficos remotos, volvió al modelo de conectarse por SSH a una VM local
- Volvió a necesitar un editor para sesiones largas de trabajo, y la opción fue Emacs
- Su antiguo
init.eltenía cientos de líneas de configuración acumuladas durante años, pero como ya no entendía bien el contenido, quiso desecharlo todo y empezar de nuevo - En ese momento descubrió Doom Emacs
- Doom Emacs es una “distribución” de Emacs preconfigurada desde el inicio
- Ofrece valores predeterminados razonables
- Trae integración de lenguajes ya preparada
- Brinda una experiencia familiar para exusuarios de Vim
- No afirma ser un IDE, pero en el uso real se siente como uno
Cómo Doom Emacs cambió la experiencia de uso
- Tras configurar Doom Emacs, Emacs volvió a sentirse como la “herramienta correcta”, del mismo modo que VSCode lo había sido en 2015
- Muchas funciones de Emacs quedan expuestas a través de menús emergentes interactivos detrás de atajos basados en la tecla space, lo que hace más fácil descubrirlas
- Convive con atajos estilo Vim y ofrece un flujo de teclado que reduce la carga en las muñecas
- La configuración se divide en tres archivos sencillos
config.el: define ajustes globales comothemeyfontinit.el: selecciona los módulos específicos de Doom que se van a activarpackages.el: instala paquetes no incluidos en Doom
- Los valores predeterminados son razonables y los detalles que conviene ajustar vienen bien comentados
- Gracias a la evolución de LSP y a funciones modernas como tree-sitter, Emacs ahora se siente como un IDE
- Se obtiene una integración de lenguajes adecuada para la mayoría de los lenguajes con los que hay que trabajar
El valor de usar el mismo entorno de desarrollo en cualquier lugar
- La función más poderosa es poder tener el mismo entorno de desarrollo sin importar en qué máquina se trabaje
- Eso incluye una MacBook, una laptop Linux, una estación de trabajo Linux en la nube y hasta un servidor FreeBSD personal
- Lo único necesario es shell, tmux y Emacs
- Al trabajar en máquinas distintas, tener el mismo entorno y la misma memoria muscular aporta un valor directo a la productividad
- Por esa necesidad, Emacs se ha vuelto una herramienta aún más importante que antes
¿Hace Doom Emacs demasiadas cosas?
- Hay quienes se quejan de que Doom Emacs “hace demasiadas cosas”, pero justamente resulta útil porque hace muchas cosas
- A veces surge la duda de si en algún momento convendría reducir la configuración para aprender más sobre Emacs en sí
- La tendencia a incorporar varios módulos modernos de terceros como paquetes base de Emacs también alimenta esa duda
- Últimamente también existe el interés por probar distribuciones como Bedrock o Emacs Solo
- Aun así, la energía de activación necesaria para cambiar es alta, y aun tomando ese camino, vuelve la pregunta de por qué no llegar entonces hasta Emacs “raw”
Distancia frente a Elisp, Org mode y Magit
- Todavía no termina de entender del todo cómo el hecho de que Emacs esté basado en Elisp transforma tan profundamente los flujos de trabajo de otras personas
- Se puede implementar más lógica y más flujos de trabajo dentro de Emacs, pero ya resuelve casi todo fácilmente con shell scripts
- Los scripts se sienten más fieles al espíritu Unix, desde la perspectiva de “Unix is my IDE”
- No le convence que Org mode y Magit no sean aplicaciones independientes, sino que estén atados a Emacs
- Mientras siga existiendo la necesidad de trabajar continuamente en distintas máquinas remotas, Emacs seguirá siendo una herramienta importante
1 comentarios
Opiniones en Lobste.rs
Escribí este post porque el tema me pareció demasiado gracioso
No por una pregunta en particular, sino porque estoy viendo a gente con cargos altos en empresas “descubrir” las herramientas de línea de comandos mientras usan agentes de código basados en CLI, y luego intentar mostrar lo útiles que son esos nuevos descubrimientos
Hasta ahora, el caso más representativo ha sido tmux, y ahora estoy esperando a que pronto se den cuenta de que Vim y Emacs también existen
Estas herramientas han estado ahí desde hace muchísimo tiempo, y si le preguntas a un “desarrollador 10x senior” de una empresa, probablemente te dirá que sí las usa
Y aun así, muchas veces se las trató como “jaja, eso es una reliquia antigua. ¡¡vámonos a la web!!11” Quizá había una razón por la que esos desarrolladores siguieron usando estas herramientas ;P
Eso incluye que la CLI se vuelva más común y que mucho conocimiento que antes se transmitía de boca en boca quede documentado. Claro, bajo la premisa de que sea conocimiento hecho por personas
Ojalá que, incluso después de pasar esta etapa incómoda, esta parte buena se mantenga
No tengo cifras, pero diría que es una mayoría aplastante
Yo también estoy entre los que apenas están empezando a aprenderlo
Hace unos años probé Doom Emacs, pero me rebotó porque la latencia era lo bastante lenta como para molestar. No sé si eso ya quedó en el pasado gracias a la compilación nativa; como por ahora sigo con Emacs básico sin configuración, me cuesta notarlo. Estoy usando 30.2 de Nixpkgs, y parece que la compilación nativa viene activada por defecto
No me interesa demasiado algo como escribir correos desde Emacs; lo que necesito es un editor que pueda moldear a mi gusto. También me gustaría que me sirviera cuando quiera aprender Lisp más adelante, y probablemente será Janet. En Helix todavía no hay plugins, así que del lado de Lisp casi no hay opciones. También me gusta la filosofía de “todo es texto”, aunque todavía está por verse si realmente me encaja bien
También tiene cosas intimidantes si uno lo va a aprender en 2026. Por las capas de conocimiento tácito acumuladas durante décadas, lees textos y te salen por todos lados nombres de paquetes, nombres de comandos, etc., y uno solo quiere hacer
$THING, así que termina abrumado. Por eso tomé Mastering Emacs como ruta de aprendizaje guiadaLos keybindings por defecto también son bastante raros. Ya sé que puedo reconfigurarlos todos, pero eso agrega más trabajo. Además, ya me armé yo mismo un teclado ergonómico dividido y también ajusté el firmware para un flujo de trabajo tipo Vim/Helix, donde no se usan teclas modificadoras como parte central
Como alterno entre tres tipos de hardware —MacBook Pro, PC y teclado custom— necesito encontrar keybindings consistentes que no me derritan el cerebro.
hjklestá en el mismo lugar en todos los teclados, pero teclas comoCtrlnoPuede que te sermoneen diciendo que evil es para refugiados de Vim que no quieren aprender “el verdadero evangelio de Emacs”, pero el verdadero evangelio de Emacs® es usarlo de la manera que mejor te funcione a ti
Uso Emacs desde 1998 y para nada era fan de Vim. Hacia 2011 empecé a tener un poco de lesión por esfuerzo repetitivo en las muñecas, así que probé paquetes para reducir eso, y durante varios años usé bastante god mode, pero seguía sintiéndose raro
Entonces probé evil “para demostrar que no iba a funcionar”, sin haber usado Vim en mi vida, y en una semana ya tenía tanta soltura como con god mode, y un mes después era más rápido que cuando usaba los keybindings oficiales de Emacs
Eso no significa que los keybindings por defecto estén mal. Mis muñecas no están bien, así que tu experiencia puede ser distinta. boon o meow también podrían funcionarte bien
Pero si evil te funciona, no tienes por qué sentir ninguna culpa. Emacs cambia al usuario, sí, pero mucho más que eso, Emacs cambia para el usuario
Lo ideal es configurarlo tú mismo, pero da trabajo, y proyectos como Doom sí hacen bastante más fácil la entrada de usuarios nuevos
Antes conocía bastante bien los keybindings por defecto de Emacs, pero nunca me parecieron naturales, y sobre todo eran poco descubribles
Doom Emacs usa una tecla prefijo SPC para casi todo, y si te detienes un momento aparece un menú temporal que explica las posibles completaciones, lo cual está bastante bien. Te permite descubrir funciones que no conocías y no choca con el modo modal de Vim
Por eso, una configuración con edición de texto en modo Vim y tareas de Emacs en combinaciones con SPC me parece un buen equilibrio
Los keybindings por defecto de Emacs también tienen sus ventajas. Las teclas básicas de manipulación de texto se comparten con readline e incluso con macOS. Las teclas de manejo de texto estilo Emacs en macOS también llegaron a VSCode y no chocan con las teclas estándar del portapapeles, así que VSCode en macOS me parecía bastante bueno
Después de pasarme a Windows y Linux, se me hizo imposible soportar VSCode sin un plugin de Vim
He oído que trae de base funciones parecidas a Kakoune y Helix, y que intenta ser menos invasivo. No he usado ninguno de los dos personalmente, así que hablo por lo que me han contado
El paquete evil que me recomendaron me parece problemático porque se adueña de demasiados keybindings y no se lleva bien con paquetes externos, así que terminas necesitando muchos paquetes “adaptadores”
meow, en cambio, una vez configurado, requería bastante menos mantenimiento
Llevo usándolo 33 años, y hace todo lo que necesito de un editor o IDE
Iba y venía entre Doom y (n)vim, pero últimamente me quedé casi por completo con Neovim
El problema principal que tuve usando Emacs era, irónicamente, lo doloroso que resultaba mantenerlo. Cuando actualizaba Doom, la sincronización de paquetes se desacomodaba y a menudo no quedaba otra que la opción nuclear de reinstalar todo
Claro, seguramente podría haberlo arreglado de una forma menos “novata”, pero a cierta altura uno solo quiere que la herramienta funcione. Cuando tienes trabajo por hacer, que se rompa la configuración y depender demasiado del editor es difícil de sobrellevar
Aun así, extraño org-mode y la forma general de navegar de Emacs
Cada vez que intento soluciones “modernas” como VSCode o CLion, termino teniendo aún más de los mismos problemas. No tienen funciones de accesibilidad decentes, así que en vez de navegar solo con teclado hay que andar haciendo clics incómodos, y el comportamiento “Vim” también se queda corto frente al original
La razón por la que uso Neovim estos días es simplemente que funciona bien. La verdad, si le hubiera pedido a un agente de código que me arreglara la configuración durante dos minutos, probablemente podría decir exactamente lo mismo de mi Emacs actual (:
updatede Doom varias veces, pero siempre aparecía algún problemaHoy en día, cada vez que quiero actualizar o lo necesito por una actualización de Emacs, borro todo con
rm -rf ~/.emacs.d/y vuelvo a configurar Doom desde cero. Tengo~/.doom.d/en control de versionesCon ese flujo no he tenido problemas
Soy una persona rara que hace desarrollo, escritura y correo electrónico todo en Emacs, y llevo como 15 años así, pero nunca encontré el tiempo ni el margen para aprender elisp
Incluso cuando toco los archivos de configuración, en realidad no tengo muy claro qué estoy haciendo. Aun así, sigue siendo el entorno donde soy más productivo, lo cual demuestra lo increíble que es este editor :-)
Leer Mastering Emacs en serio lleva tanto tiempo en mi lista de pendientes que hasta da vergüenza admitirlo
M-x high-fiveEn mi caso también uso muy pocos paquetes y me quedo con las combinaciones de teclas originales. En realidad no existe una función high-five, pero capaz que esta sea por fin la ocasión para meterme de verdad con el elisp
No me gustaba cómo se renderiza Vim y ya estaba cansado de la onda Electron/VSCode, así que me pasé a Emacs hace unos 2 años
Me engancharon avy y algunos plugins de salto, pero lo que hizo que me quedara y que todavía hoy sea mi herramienta principal para cambiar código es magit
La empresa cliente con la que trato en el trabajo depende por completo de usar archivos CSV gigantes, pero allí no parece haber nadie que sepa cómo abrir o revisar datos en un archivo de 1 GB
Ni siquiera conocen el comando
headpara pedir los encabezados del CSVDespués de usarlo durante años con X/GUI, acabo de pasarme a
-nwSolo uso la versión Pgtk cuando doy presentaciones