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.
¡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:
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:
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.
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─.
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.