1 puntos por GN⁺ 4 시간 전 | 1 comentarios | Compartir por WhatsApp
  • 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.el tení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 como theme y font
    • init.el: selecciona los módulos específicos de Doom que se van a activar
    • packages.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

 
GN⁺ 4 시간 전
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

    • Una cosa buena de la “burbuja de productos generados de baja calidad” es que el texto plano está volviendo a ser un medio válido e importante
      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
    • La mayoría de quienes usan Emacs probablemente lo hacen en GUI
      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 guiada
    Los 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. hjkl está en el mismo lugar en todos los teclados, pero teclas como Ctrl no

    • Si los keybindings te resultan difíciles y ya estás más acostumbrado al lado de Vim, vale la pena echarle un ojo a evil
      Puede 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
    • Doom realmente cambia muchísimo según cómo lo configures. Y esa parte también ha ido mejorando con el tiempo
      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
    • Justo que los keybindings por defecto sean raros fue algo que me gustó de Doom Emacs
      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
    • Si vienes de Helix, también podrías ver meow
      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 (:

    • Probé la función update de Doom varias veces, pero siempre aparecía algún problema
      Hoy 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 versiones
      Con 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

    • Yo estoy casi igual. Arreglando la configuración y editando terminé aprendiendo un poco de elisp por ósmosis, pero en realidad sé tan poco que hasta me da pena
    • M-x high-five
      En 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 head para pedir los encabezados del CSV

  • Después de usarlo durante años con X/GUI, acabo de pasarme a -nw
    Solo uso la versión Pgtk cuando doy presentaciones