Les contaré una historia…
Érase el año 2014, yo llevaba ya un tiempo usando GNU/Linux y como buen iniciado que tiene un ordenador algo justito de recursos, siempre probaba entornos de escritorios distintos intentando ver si encontraba algún otro que no fuera Gnome 2 y que me resultara cómodo a la vez que ligero, ya que mi ordenador seguía siendo aquel que les comenté que era bajito de recursos y con el que pasé de usar Windows a GNU/Linux.
El el post de la migración, mencioné que había agarrado la costumbre de probar cosas por una semana antes de tomar una decisión final y eso hacía, hasta que llegué a Gnome 3 y desde el primer segundo me pareció la cosa más horrible que había visto. Me costó mucho usarlo, así que apenas terminó la semana lo quité y tardé un día en volver, porque aunque fuera feo (que se arregla con themes) y fuera más pesado, era lo que necesitaba y no lo sabía hasta haberlo quitado (¿Déjà vu?).
Antes de seguir, quiero aclarar que voy a hablar de lo que para mi uso personal es el editor perfecto para programar. Es una opinión personal, para un uso personal que bien puede no ser válido para otros.
Lo que busco en mi editor de código
Simplificando mucho, lo que busco en un editor es que sea rápido, no muy saturado y que traiga funcionalidades que me faciliten el programar como el autocompletado. En ese aspecto, Atom, Sublimetext y VSCode cumplen bastante bien para los lenguajes que necesitaba y sublimetext gana a los otros en ser el más ligero en general y es quizá el que más me convencía de los 3; estuve por pagar por la licencia de uso, pero si luego lo comparo con algo tan simple como Gedit con sus pluigins, me terminaba convenciendo más Gedit.
El siguiente en mi lista de mejores era Atom, que puedes extenderlo bastante bien mediante plugins y me encanta que sea de una interface tan limpia, pero es un regordete que requiere demasiado. Diría que a mi parecer, Atom gana en tener la mejor interface.
Finalmente llegamos al favorito de muchos, VSCode: Este editor no cabe duda de porqué es el favorito, tiene todo, al punto de tener demasiado y aquí es donde falla para mi. Primero que nada, su interface me parece mala, saturada como si fuera una declaración de intenciones de su exceso de funcionalidades y que luego he visto en otros programadores que los hace caer en la dependencia de la herramienta y con esto me refiero al hecho de que no saben hacer las cosas si no es mediante dicha herramienta.
Desde luego también probé otras cosas como Brackets, Geany o Gnome Builder, pero mejor hablo solo de los populares o esto ser haría muy largo y repetitivo (muy bien esto, pero falta eso, etc.).
Al final, los 3 editores me parecen excelentes y aún sigo instalando a veces Atom y VSCode para volver a probarlos, pero al final, he terminado volviendo al simple Gedit que usé aquella semana que dio inicio a mi migración de Windows a GNU/Linux, y debo decir que tampoco es que sea un editor que me convenza: Si bien tiene una inteface suficiente (me gusta más la de atom, pero esta igual es limpia), es rápido, se integra con el sistema y tiene la posibilidad de tener un autocompletado muy básico (muy justito), al final se queda en un «casi» para todo y si lo terminaba usando siempre es porque es un casi-en-todo que al menos viene preinstalado y no tengo que configurar prácticamente nada o de lo contrario usaría Gnome Builder o Atom.
Boy meets girl / Programmer meets text editor
De la experiencia de Gnome, debería haber aprendido a no juzgar por la primera impresión, pero por lo visto no lo hice.
Tenía Emacs instalado hace años, ya que cada cierto tiempo me tocaba editar algo que mis otros editores no podían y me parecía un editor potente, pero cuya apariencia y uso no me terminaban de convencer, pero era justo la apariencia lo que más para atrás me echaba y al ser un programa «antiguo de terminal» me hizo asumir que esa apariencia no era modificable.
En algún momento, decidí probar con VIM ya que vi un vídeo donde mostraban como configurarlo (bueno, primero vi a alguien usarlo y esa persona recomendaba el canal de ThePrimeagen) y me gustó bastante. Cuando lo dejaba de usar extrañaba sus atajos de teclas al programar, pero no era práctico el que me retrasara en el trabajo por tener que adecuarme a usarlo. Allí es cuando alguien random de internet me dice que pruebe Emacs. Ya lo tenía instalado y era fin de semana, así que me puse a ver como configurarlo bajo la premisa de que si VIM podía tener themes, configuraciones y plugins, era lógico que Emacs también ¿no?.
Aquí hago un pequeño paréntesis para mencionar que el hecho de poder exportar mis configuraciones tanto en VIM como en Emacs, hace que me parezcan una excelente opción a pesar de que configurarlos a medida la primera vez sea una odisea. Al final te queda todo tal y como te gusta y no tienes que volver a hacerlo en tu otro ordenador o cuando reinstalas el S.O. cosa que si me pasaba con todos los demás editores.
Tardé bastante en tener algo medianamente decente, pero aquí tenía la ventaja de tener todo lo bueno que veía en VIM (de hecho con spacemacs puedes tener prácticamente VIM en Emacs) y que podía dejarlo de manera que no fuera doloroso hacer la transición desde otros editores.
Conclusión
Al final, he creado mi propia configuración, procurando hacerla adecuada para la transición y la voy dejando en un repositorio en mi git personal: https://git.kj2.me/kj/confi-emacs-inicial
Al día de hoy es el editor que uso para trabajar y para uso general incluso. Aún sigo usando GEdit de rato en rato, pero no para programar y menos para leer código.
Aún no creo que esté con el editor perfecto, pero sin duda este es el mejor con el que me he encontrado y probablemente lo termine siendo, ya que es un editor bastante hackeable, me atrevería a decir que en este aspecto es mejor que Atom que tiene el ser hackeable como slogan.
PD: Como curiosidad, ahora me da por presionar CTRL+x CTRL+s (atajo para guardar en Emacs) cada que termino de escribir algo. Lo he hecho varias veces mientras escribía este artículo :P.
Actualización: La configuración inicial he decidido dejarla tal cual e iniciar un nuevo repo con mi configuración actual de emacs: https://git.kj2.me/kj/confi-emacs-actual
kj