Emacs es un poderoso editor de texto que tiene fantásticas funcionalidades y es totalmente configurable; pero es difícil de aprender a usarlo. Mi experiencia con Emacs fue tortuosa al principio, varios intentos fallidos me desmotivaron por completo; pasaron varios meses hasta que decidí enfrentarlo nuevamente. Totalmente decidido a descubrir por mi mismo todas maravillas que decían sobre Emacs en los foros de Internet, y sin importarme el tiempo que me llevaría, empecé a explorarlo. Poco a poco fui entendiendo su funcionamiento y filosofía (por decirlo de alguna forma), sin embargo, el camino se ponía escarpado y cuesta arriba, y la intención de renuncia aparecía una y otra vez. Yo no soy programador!, Este programa es para hackers!, por que no lo hacen más amigable!, hasta Richard Stallman se fracturó la mano por usarlo!, eran algunas de las frases que venían a mi mente cuando me sentía estancado.
El uso excesivo del teclado fue la primera barrera que tuve que saltar, descubrí dos cosas; 1) no sabia utilizar el teclado correctamente, y 2) un teclado en español complicaba un poco más las cosas debido a los acentos y a que la ubicación de algunas teclas es diferente al teclado en inglés. Usar los meñiques para pulsar la tecla Ctrl es un todo un desafío (aunque resoluble), además, luego entendí que hablar de Emacs y teclados es todo un cuento. La segunda gran barrera fue la documentación, como buen latino, el manual de usuario fue lo último que usé, además la documentación al inicio resulta muy técnica y difícil de seguir. Emacs es autoducomentado, sin embargo, el formato Info es un lío cuando recién lo conoces (se abre en el mismo programa que aun no sabes usar), así que me limité a buscar tutoriales y videos; en español casi nada lo que dificultó más el asunto.
Un primer aspecto clave para avanzar fue entender los conceptos de buffer, windows, frame, mode line, mini-buffer y echo area. El trabajar con varios buffers en el mismo espacio de trabajo divididos de forma vertical y horizontal, me resultaba atractivo y útil. Llamar el mini-buffer, teclear un comando y que se ejecute, me hizo sentir que tienes el control de lo que haces. Cada vez que ejecutaba un comando, quedaba registrado en un buffer especial donde podía ver el historial de comandos y resultados. Otro buffer special llamado *scratch* permitía ejecutar comandos en lenguaje ELISP, aunque no sabía nada de programación, me pareció muy interesante poder crear una funcionalidad y poder utilizarla al instante, sin necesidad de reiniciar el programa ni volver a instalarlo o algo por el estilo. El segundo aspecto clave fue entender los modos mayores y modos menores en Emacs, me permitió orientar el aprendizaje de forma más específica, aprender a editar los tipos de archivo que utilizaba con frecuencia. En aquellos días estaba aprendiendo LaTeX y me resultaba prometedor este nuevo Editor de texto para ese uso (nuevo para mí). Descubrí también el modo menor auto-fill, el cual realizaba un salto de línea de forma automática y la longitud de las líneas se podía cambiar. Gracias a esto aprendí que la longitud de las líneas en un texto puede hacer que la lectura sea más cómoda y legible para el lector (entre 75 a 80 caracteres por línea).
Empecé a jugar con la configuración de Emacs que veía en los tutoriales, por ejemplo a desactivar la ventana de bienvenida, ocultar el menú y la barra de íconos, cambiar el tema y los colores, definir el tipo de fuente por defecto y cosas por el estilo, esta parte fue quizá lo más divertido en el proceso de aprendizaje. Necesitaba aprender Python para análisis de datos y Emacs resultaba de mucha utilidad para escribir los scripts, de igual forma resultaba útil para editar los archivos de configuración del sistema operativo (Trisquel GNU/Linux) y de los programas que utilizaba (aún con algo de dificultad en el manejo de Emacs).
El siguiente paso fue aprender a instalar paquetes adicionales para facilitar algunas tareas, neotree fue uno de esos paquetes que usé mucho para navegar por los directorios. AucTex, auto-complete, helm, helm-bibtex y yasnippet, fueron apareciendo poco a poco en mi ambiente de trabajo. Cada uno de estos paquetes requirió su tiempo para aprender a usarlos.
En este punto ya me sentía cómodo con Emacs y decidí ir un poco más allá, empecé a enviar los correos electrónicos desde Emacs, me parecía genial que se pudiera hacer incluso al estar editando algún otro archivo, con una combinación de teclas, abrir el editor de correos, redactarlo y enviarlo, luego seguir editando el archivo anterior sin salir del programa, fantástico!. Luego aprendí a usar una terminal dentro de Emacs lo que extendió un poco más las posibilidades y mi curiosidad.
El siguiente nivel fue aprender a incorporar funciones de otros usuarios y crear mis propias funciones para realizar cosas muy particulares de mi trabajo. Esto significaba que debía aprender a programar, consciente de que era (y es) algo muy desafiante, decidí solicitar ayuda a en las comunidades de usuarios. Por ejemplo, necesitaba una función que extraiga únicamente los enlaces web de un archivo de texto, crear yo mismo esa función estaba un poco lejos de mis conocimientos de Emacs, así que publiqué el problema en StackExchange y un buen samaritano me dio la solución. Esto me obligó a dos cosas, a atreverme escribir en inglés en un foro y a estudiar el código de la función. A partir de ahí, pude modificar dicha función para hacer otras operaciones similares.
En la actualidad, utilizo Emacs principalmente para editar documentos de textos en ConTeXt. Utilizo unos cuantos paquetes adicionales para que el flujo de trabajo sea más eficiente y divertido. Considero que el nivel de conocimiento que tengo de Emacs me es por ahora suficiente para realizar mis tareas. No me considero en lo más mínimo un gurú en Emacs, sin embargo, hace algún tiempo hice un curso en video para ayudar a quienes deseen aprender a utilizar este fantástico programa (lo comparto con esta publicación).
Invitarte a aprender Emacs no es solo es invitarte a _complicarte la vida_, es invitarte a involucrarte con el software libre, a anhelar una sociedad más ética, a luchar por una educación más efectiva, a la autopreparación, a proponerte metas difíciles y demostrar que puedes lograrlas, al trabajo colaborativo y sin fines de lucro y a ser un mejor profesional. A decir verdad, hasta el momento no he conocido (en persona) a nadie que use Emacs, y no he podido persuadir a nadie para que lo aprenda, no obstante, continuaré con mi iniciativa de difundir el uso de software libre, en particular Emacs y ConTeXt. Mi objetivo es formar una comunidad de usuarios de software libre que compartan sus experiencias y conocimientos para contribuir a la formación de una sociedad más ética y libre.
Curso de Emacs:
https://github.com/farliz/emacs-academia/blob/master/contenido.md
Hasta pronto.
Deja un comentario