Notxor tiene un blog

Defenestrando la vida


Introducción a Emacs

Introducción a la Introducción de Emacs

Hace tiempo que Emacs se ha convertido en una herramienta fundamental en mi trabajo diario. Prácticamente lo uso para todo, gracias a org-mode. Y tanto he hablado de él, no sólo en este blog, sino también en mi vida diaria, a mis conocidos, amigos y familiares que hay quien se ha planteado el usarlo o por lo menos probarlo. Supongo que por aquello de: yo quiero de esa mierda que fumas tú. Y eso seguido de: ¿por dónde empiezo?... yo, henchido de autocomplacencia, podría recomendar mi blog, pero tú, que ya lo has leído, o al menos hojeado, de sobra sabes que no hay siquiera un post para «no iniciados» y lo dejas claro con un: no m'entero de ná. También porque doy por supuesto que el lector utiliza GNU/Linux y en muchas ocasiones lo que utilizas es MS-Windows.

Por tanto, y a petición popular, voy a comenzar una serie de artículos que van a versar sobre Emacs, pero explicado para gente que viene nueva a él y que no tiene por qué entender nada sobre informática. Quizá los usuarios más avanzados que leéis el blog os aburráis un poco, pero estaría bien que lo leyerais, para encontrar los errores que sin duda cometeré y poder corregirlos.

Emacs es un sistema, ─algunos dicen que operativo, ni más ni menos─, que en sus ratos libres sirve para editar texto. Quizá suene a definición pretenciosa, pero es que decir que es un editor de texto se queda efectivamente corto. Algún lector que esté interesado en lenguajes de programación, también podría decir que es un LISP disfrazado de editor de texto, debido a su lenguaje embebido. Pero como esto último es más de usuarios avanzados, ya lo aclararemos más adelante en este minicurso de Introducción a EMACS.

Su nombre equivale a Editor de MACroS, pero no voy a ponerme a explicar lo que es un macro a estas alturas, no os preocupéis, es algo que tiene que ver con la programación y no es necesario para entenderlo, así que lo obviaré. Pero se puede observar, que en el nombre lleva implícito el editor. Podemos, por tanto, referirnos a él como tal.

Nació durante los años 70 del siglo pasado, en 1975 Richard Stallman y Guy Steele hicieron la primera versión. Ya ha llovido desde entonces y sigue funcionando, ahora mismo estoy escribiendo esto con la versión de GNU Emacs 26.3. No voy a entrar mucho más en su historia, si alguien está interesado, lo puede buscar fácilmente, pero sí quiero decir algo sobre su antigüedad para explicar por qué no sigue las convenciones de combinaciones de teclas o de nombres de otros programas. Las interfaces gráficas estaban en experimentación y los ratones eran un juguete que se estaba construyendo en los laboratorios de Xerox en Paloalto.

Por tanto, quiero decir que utiliza sus propios nombres y combinaciones de teclas y está fundamentalmente orientado a manejar texto, porque cuando se inventó todo era texto. Los operarios tecleaban en terminales tontas conectadas a un ordenador central con un teclado ligeramente distinto a los actuales y unas pantallas capaces sólo de mostrar texto.

terminal.jpg

¡Pero vamos al lío! Para aprender a manejarlo hay que instalarlo y me vas a permitir que me salte ese punto. Sería interminable hablar de cómo instalarlo en todos los sistemas operativos y sus variantes y que quede algo legible por el público. Pero seguro que no tendrás problema en hacerlo. En todo caso, si tenéis algún problema al hacerlo, podéis encontrar en la red información de cómo superar todos esos escollos.

En todo caso, mi consejo es que utilices el modo gráfico. Es decir, lanzar Emacs en su ventana de escritorio y no desde la consola. De momento te será más fácil acostumbrarte a él, tiene menú y una barra de herramientas que se ajustan a lo que estemos haciendo automágicamente. Y aquí lo tenemos:

inicio-emacs.png

Figura 2: Ventana (Frame) de inicio de Emacs.

Convenciones de teclas

Voy a utilizar los nombres y combinaciones tradicionales de Emacs para las teclas. Podrías pensar que te sería más útil el que empleara los nombres modernos: ¿Por qué llamar Meta a la tecla Alt, si todo el mundo la conoce ahora como tal? Pues básicamente, porque toda la documentación de Emacs, todos los gurús que hablan sobre Emacs y todos los usuarios utilizan esa convención. Así, si quieres no liarte con la terminología cuando leas algún tipo de ayuda o artículo sobre Emacs, es mejor que te acostumbres a ella.

En muchos casos encontrarás abreviaturas como C-x b. Eso quiere decir que se pulse y se mantenga pulsada la tecla Control mientras se pulsa a la vez la tecla x, se suelte ambas y se pulse la tecla b. Así nos permite cambiar de buffer (ya hablaremos de lo que es en el siguiente apartado). Si eres de los que no puede evitar usar el ratón y estás usando Emacs en un entorno gráfico con ratón y quieres cambiar de buffer, lo mismo te hace más gracia C-<mouse 1>. Eso significa que pulses y mantengas pulsada la tecla Control mientras pulsas el botón izquierdo del ratón... (¡ahí va, aparece un menú con nombres raros! El Buffer menu). Lo que quiero destacar es el modo de describir algunas teclas o botones con <...>. Encontrarás con frecuencia también ese tipo de notación, como <RET> para la tecla de retorno, <SPC> para el espacio, <TAB> para el tabulador, <ESC> para la tecla escape, etc.

Sin embargo, las más frecuentes en las combinaciones se suelen marcar con un una letra en mayúsculas C para la tecla control, M para la tecla Alt izquierda1, S para cualquiera de las teclas mayúsculas (Shift)2.

Como he explicado antes, cuando una de esas teclas se muestra separada con un guión de otra, quiere decir que se deben pulsar a la vez. Por ejemplo, C-c quiere decir que hay que pulsar la tecla c mientras se tiene pulsada la tecla Control. C-c s quiere decir que se pulse la tecla c mientras se tiene pulsada la tecla Control y después de soltar se pulse la tecla s. C-S-c quiere decir que se pulse la tecla c mientras se mantienen pulsadas las teclas Control y Mayúsculas. También podemos utilizar la combinación C-x C-c sin soltar la tecla Control entre las pulsaciones de x y c.

Nombres del entorno

Una vez alcanzado el fácil criterio de las teclas, pues no son más que convencionalismos de notación, viene lo complicado de llamar a las cosas por un nombre al que no estamos acostumbrados. Por ejemplo, a lo que tú llamas ventana en tu escritorio Emacs lo llama Frame. Si nos fijamos en la figura 2 podemos apreciar un Frame, con elementos ordenados de arriba hacia abajo: su menú, su barra de herramientas, un marco que muestra el buffer de About Emacs, su barra de estado y la última línea, donde pone For information about... es lo que conocemos como área de eco. ¿Demasiados conceptos apelotonados en el mismo párrafo? Pues vamos uno a uno.

Sesión
Invocación de Emacs. Se puede invocar al programa varias veces de forma independiente.
Frame
Es lo que modernamente se llama ventana. Podemos tener una sesión con varios Frames, para, por ejemplo, cuando tenemos varias pantallas separar el trabajo entre distintas pantallas sin necesitar otra sesión.
Window
En la era moderna lo llamaríamos marco. Básicamente es un recuadro en la ventana, o expresado al modo de Emacs es un window en el Frame.
Buffer
Es el contenido. Emacs trabaja con contenidos y los muestra en windows. Pero en un window puedo hacer que se muestre otro contenido (buffer) en cualquier momento. Recuerda, que el contenido es independiente del window en que lo vemos y también es independiente de los ficheros. Hay buffers que podemos tener abiertos y no tienen relación con ningún fichero de nuestro disco. Como por ejemplo, el buffer de *Messages* o el de *scratch*. Ese tipo de buffer es especial y vienen marcados entre *...*, para indicárnoslo.
Fichero
Un fichero son los datos que guardamos en el disco duro. Normalmente, al visitar uno cargamos su contenido en un buffer, o guardamos los contenidos de un buffer en un fichero para salvar nuestro trabajo.

Comandos y modos

Es muy pronto para comenzar con los comandos, pero que sepas que muchas convenciones vienen, precisamente por la ingente cantidad de comandos que podemos utilizar en Emacs: toda acción que se pueda hacer en el editor, se le puede asignar una combinación de teclas o llamar a su comando mediante M-x. Al pulsar esa combinación de teclas (Alt y x) puedes escribir cualquiera de los comandos de Emacs. Como iremos viendo en los siguientes capítulos con más detalle esto, lo dejaré aquí. Pero por ejemplo, forward-char, que podríamos llamar con C-f (o sustituir por la flecha derecha del cursor).

Los modos al principio pueden parecer innecesarios, sin embargo, toda la edición se basa en ese concepto. Un modo configura el editor para ser utilizado para una función concreta. Por ejemplo, si lo voy a utilizar para programar en un determinado lenguaje, cargará el modo específico para él. Los comandos varían según el modo y eso al final nos facilita la vida porque la misma operación se llama con la misma combinación de teclas aunque se necesiten herramientas distintas. Ya veremos que tenemos una combinación de teclas como C-c C-c que realiza muchas acciones dependiendo del modo en el que se encuentre.

Además hay modos mayores y menores. No tienen nada que ver con el tamaño a pesar de los nombres. Un modo mayor cambia la configuración del buffer mientras que un modo menor añade funcionalidad. Como hablaremos en otras entregas sobre estos detalles lo dejaremos de momento.

Para los nuevos usuarios y los no programadores pueden parecer características secundarias, pero en realidad es lo que le da toda la potencia a nuestro editor.

El cursor, el punto y la marca

A colación del movimiento, que lo veremos en la siguiente entrega, sólo haré un apunte que es interesante conocer desde el principio. Si hemos utilizado otros editores más gráficos, estaremos acostumbrados a pulsar mayúsculas y mover el cursor sin soltarlas para marcar una zona. En Emacs esto no funciona así, sino que hay que tener en cuenta los dos conceptos de el punto y la marca.3

Es fácil de entender que el punto es la posición donde está el cursor en una ventana. Sin embargo, no es tan fácil. Porque cada ventana tiene su punto y sólo coincide con el cursor cuando el cursor está en la ventana del buffer. El cursor es único para todo el programa y es el que da el foco al frame y a la ventana, cuando el cursor entra en una ventana, se posiciona para coincidir con el punto. Sin embargo, podemos tener cargado el mismo buffer en dos ventanas, por lo que podremos editar y visualizar dos zonas distintas del mismo buffer, y cada una tener su correspondiente punto, pero la marca pertenece al buffer y es única... ¿un lío? Verás como usándolo lo entiendes. Para resumir: El cursor pertenece al Frame, la marca pertenece al buffer y el punto es la conexión entre la ventana y el buffer.

Para establecer la marca hay varias teclas, pero la que suelo utilizar yo es C-<SPC>. Cuando necesito marcar algo pulso control+espacio y se activa la marca, me muevo hasta donde quiero marcar y realizo la acción que quiero sobre lo marcado. Todas estas cosas las veremos más adelante y no voy a extenderme más.

Para cambiar el punto sólo tenemos que mover el cursor en la ventana. Normalmente, la marca se moverá con él también, habitualmente. Cuando fijamos la marca y movemos el cursor es cuando seleccionamos el texto.

¿Que cómo anular el marcado? Pues con el anulador universal: C-g. Esa combinación de teclas es la que nos salvará de bastantes meteduras de pata y arrepentimientos.

Conclusiones

Este post no aclara mucho aún, es más una entrada para mostrar la intención de hablar sobre Emacs desde un punto de vista de usuario. Enseñar a utilizar el editor y sobre todo a manejar la ayuda: la infinita ayuda con que viene cargado de serie.

Como dije en la introducción, Emacs no viene solo, proporciona el modo org que es la navaja suiza de la computación. Sirve para escribir documentos, para gestionar la agenda, para hacer cálculos y sus gráficos... en fin, es la navaja suiza de la computación.

Si tienes prisa por empezar te aconsejo que hagas el tutorial, para ello pulsa C-h t o si aún te sientes más cómodo con el ratón utiliza el ratón para ir al menú y pincha en Help -> Emacs Tutorial. En la próxima entrega hablaremos sobre cómo movernos por las ventanas y los buffers, por las líneas y las palabras... así, si ya has hecho el tutorial te servirá para fijar los conceptos.

Nota al pie de página:

1

M proviene del nombre original de la tecla: META. Con el paso del tiempo se cambió la denominación. No voy a extenderme en las razones históricas, sólo apréndete que M se refiere a la tecla Alt.

2

No confundir con la tecla de bloqueo de mayúsculas, ─una tecla que, en mi opinión, debería desaparecer de todos los teclados de los ordenadores─.

3

En realidad, se puede utilizar lo de marcar texto con las mayúsculas y el cursor activando org-support-shift-select, pero no hablaré de ello en un artículo introductorio. Ya hablaremos de cómo se configura Emacs en posteriores entregas.


Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, he decidido no proporcionar dicha opción en el Blog. Si alguien quiere comentar algo, me puede encontrar en Mastodon y en Diaspora con el nick de Notxor.

También se ha abierto un grupo en Telegram, para usuarios de esa red.

Disculpen las molestias.