Primeros pasos con el editor
El otro día vimos unos pocos conceptos para tener clara la terminología y aclararnos a la hora de trabajar. No te preocupes si no has entendido algo de lo que hablé allí, porque con el uso lo entenderás rápidamente.
En esta entrega vamos a continuar con el uso de nuestro editor favorito, ─al menos el mío, el tuyo espero que lo sea─. Hablaba la semana pasada de que Emacs tiene más de 40 años y sigue en la brecha. En ese tiempo, hemos visto pasar por nuestro lado muchas tecnologías para la edición de texto y la programación, mientras algunas quedaban como pilares de uso diario: como Vim o Emacs.
Si bien, Emacs ha sabido hacerse un hueco para usos que están más allá de la programación, resulta un poco difícil ordenar las ideas y funcionalidades para que el acercamiento de esa gente que pretende usarlo para otras tareas, y que no son programadores, no desistan a las primeras de cambio. Por eso me decidí a escribir esta serie de artículos, pues me di cuenta de que la mayoría de la documentación, entradas de blogs, instrucciones de instalación de paquetes, etc., están escritas para iniciados. Ahora me doy cuenta que, como ocurre en todos los sistemas complejos, no hay explicaciones sencillas y todos los conceptos están tan íntimamente relacionados que no se pueden separar de ninguna manera simple.
La ayuda
Emacs viene con una documentación completa y vamos a utilizarla para aprender a movernos por una ingente cantidad de información que nos resultará útil para sacarle todo el partido a nuestro editor. Sin embargo, tanta información a veces abruma y no encontramos justo lo que buscamos, hay que aprender a utilizarla.
Si ya has utilizado con anterioridad la herramienta info
de Unix
estás de enhorabuena, porque la ayuda que viene con Emacs se basa en
ella. Si no lo has hecho, sigue estos sencillos pasos:
- Pulsa
C-h r
, eso debería abrir un buffer con el manual de Emacs. Si lo tuyo es el ratón:Help -> Read the Emacs Manual
te llevará al mismo sitio.1 Pulsa
h
directamente en ese buffer, debería llevarte a una pequeña explicación de cómo funcionainfo
.Básicamente te cuenta que existen enlaces y que puedes navegar por las distintas páginas con los comandos
(n)ext
,(p)rev
,(u)p
... y alguno más que no voy a detallar ahora. Lo importante es que te quedes que la navegación por los distintos apartados es consistente con las teclas de movimiento de Emacs (no te preocupes, las veremos enseguida).
Para moverte por el buffer de ayuda puedes utilizar las teclas de movimiento del editor o sus equivalentes del cursor.
Un poco sobre configuración
La mayoría de usuarios de Emacs preferimos modificar el código de nuestro fichero de inicio, ese que carga todos nuestros gadgets y los ajusta a nuestros gustos. Si vienes por primera vez a nuestra herramienta de edición y no eres programador estarás preguntándote: «¿tengo que aprender a programar para manejar el editor?». La mejor respuesta que se me ocurre es: «es aconsejable, pero no imprescindible». O dicho de otro modo, la configuración se puede gestionar de un modo más gráfico. Y quiero explicar un poco, con un par de ejemplos cómo se puede hacer, utilizando los menús y el ratón para quien esté acostumbrado a ese uso.
Por ejemplo, vamos a cambiar el aspecto del editor modificando el
tema. Un tema es un conjunto de acciones visuales que modifican el
aspecto que tendrá nuestro editor en pantalla. Pincha en Options ->
Customize Emacs -> Custom Themes
. Tras hacer eso, nos aparecerá un
buffer con las opciones disponibles. Siéntete libre de seleccionar
el tema que más se ajuste a tus gustos y acuérdate de pulsar el
botón de guardar los cambios y así, cada vez que inicies el editor lo
verás con el tema que hayas seleccionado... ¿Qué te ha parecido raro?
¡Oh, sí! Emacs ha abierto un buffer. Quizá estés acostumbrado a
que los programas modernos abren marcos modales donde seleccionar las
opciones. Y aunque le has dado al botón, el buffer sigue ahí, en
pantalla. Si te molesta mucho tener un buffer abierto pulsa la
combinación C-x k
y aparecerá en la última linea el siguiente texto:
Kill buffer (default *Custom Themes*)
, si pulsas <RET>
se borrará
de pantalla.
Vamos con otro ejemplo, que no tiene una entrada en el menú de manera
directa. Lo que queremos hacer es ahorrarnos el buffer de la ventana
de inicio de Emacs. Para ello vamos a pinchar en Options ->
Customize Emacs -> Specific Option...
. En la última línea (línea de
eco o de prompt) habrá aparecido el texto Customize variable:
y el
cursor allí, nos indica que está esperando que le digamos qué variable
queremos modificar. Nuestro objetivo es modificar la variable
inhibit-startup-screen
, pero vamos a ver otra característica del
editor que nos facilita la vida: escribe in
y pulsa <TAB>
... ¡eh!
nos muestra un montón de opciones, pincha con el ratón en la que
estamos buscando. Si sólo ha movido el cursor a ella, pero sigue
mostrando las opciones, pulsa <RET>
y te abrirá el buffer para
modificar la variable. Pincha en el botón Toggle
y luego en Apply
and Save
.
Si ahora cierras Emacs y vuelves a cargarlo, deberías verlo con el
tema seleccionado y la ventana de inicio es un buffer que, como
puedes apreciar en la línea de estado, se llama *scratch*
.
Mirando el código, abriendo un fichero
Los cambios que has realizado se han guardado en un fichero y vamos a
visitarlo2. Pulsa C-x C-f
y te pedirá el nombre de un
fichero, también lo puedes hacer de forma gráfica con el menú File ->
Open File...
. Seguramente tu configuración se habrá grabado en el
fichero ~/.emacs
o en el fichero ~/.emacs.d/init.el
, dependiendo
de la versión. Es recomendable, desde la versión 24 del editor, que
todas las configuraciones se muevan a init.el
dentro del directorio
.emacs.d
, para tener todas las dependencias, paquetes y otras
herramientas en el mismo directorio. Por tanto, si te ha creado un
fichero .emacs
muévelo a .emacs.d/init.el
, con renombrarlo debería
ser suficiente.
Bien, si estás utilizando el modo gráfico y no ves ningún fichero de
los que te digo, selecciona Show hidden files
en el diálogo de
selección de fichero.
¿Dos formas de abrir los ficheros? Sí, y aún te voy a presentar
otra. Pulsa: C-x d
, en la línea de eco te pregunta por un
directorio, pulsa <RET>
¡Te presento a Dired
! Mueve el cursor al
fichero o directorio que quieras con las flechas de cursor (luego
veremos cómo movernos con otras teclas) y pulsa <RET>
. ¿Lo ha
abierto? Si has pulsado sobre un fichero lo habrá abierto en un
buffer de edición, si has pulsado sobre un directorio lo habrá
abierto en un buffer de Dired
. Si el fichero era una imagen, la
habrá abierto en un buffer de imagen.
Dired
tiene muchas más opciones y tendrá un artículo para él sólo en
un futuro no muy lejano. De momento, quédate con que existe y que te
permite moverte por los ficheros y directorios de una manera cómoda y
sin salir del editor. Dired
es un paquete3 de los que vienen
con Emacs, como Org
y que le dan al editor una funcionalidad extra
convirtiéndolo en la navaja suiza que es.
Bien, en todo caso, el código que se ha generado es el siguiente:
(custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(custom-enabled-themes (quote (misterioso))) '(inhibit-startup-screen t)) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. )
Como se puede ver, lo que hemos hecho gráficamente es establecer dos
variables en custom-set-variables
: una se llama
custom-enabled-themes
y se establece a «misterioso» y la otra es
inhibit-startup-screen
y la pone a t
(true), por lo que se
inhibirá la ventana de bienvenida.
Moviéndonos por la ventana
Para movernos por un buffer siempre vamos a utiliza las mismas teclas. Sin ánimo de ser exhaustivo, voy a nombrar sólo las teclas más habituales o utilizadas. Al menos las que yo más utilizo, aquí va una lista de las teclas y su correspondiente comando:
- Por líneas y caracteres:
C-n
- Ir a la siguiente línea (
next-line
). C-p
- Ir a la línea anterior (
previous-line
). C-f
- Ir al siguiente carácter (
forward-char
). C-b
- Ir al carácter anterior (
backwar-char
). C-a
- Ir al inicio de la línea (
move-beginning-of-line
). C-e
- Ir al final de la línea (
move-end-of-line
).
- Por palabras:
M-b
,M-<LEFT>
- Ir a la palabra anterior o izquierda
(
backward-word
,left-word
) M-f
,M-<RIGHT>
- Ir a la palabra siguiente o derecha
(
forward-word
,right-word
).
- En el buffer:
M-<
- Ir al principio del buffer (
begining-of-buffer
) M->
- Ir al final del buffer (
end-of-buffer
). M-g g
,M-g M-g
- Pide un número de línea al que saltar
(
goto-line
).
Hay más combinaciones de teclas, pero con estas, de momento, hay
suficientes. Si te sirve de regla nemotécnica, la tecla C
avanza de
uno en uno mientras que la tecla M
lo hace en cantidad... más o
menos.
Abriendo y cerrando buffers
Bueno vamos a escribir nuestro primer texto. Haz lo siguiente:
- Pulsa
C-x C-f
. - En el área de entrada, donde pide un nombre de fichero, escribe
primer-texto.org
. O cualquier nombre, pero termina con una extensión.org
.
Escribe un texto, por ejemplo:
* Esto es un título de primer nivel Esto es un párrafo normal. A partir de ahora puedes escribir libremente en el editor. La separación entre párrafos es una línea en blanco. Por eso, estas líneas son un párrafo. Esto es el segundo párrafo. Como se puede ver está separado por una línea en blanco del párrafo anterior. Si pulsamos =M-q= en un párrafo, nos lo justifica y divide en líneas. ** Esto es un título de segundo nivel Por si tú no te has dado cuenta, estamos editando un fichero =Org=. ** Formato del texto Podemos utilizar /cursiva/, *negrita*, _subrayada_, +tachada+, =verbatim=, ~code~. Podemos indicar superíndices y subíndices empleando los caracteres «^» y «_», por ejemplo: - R_sol = 6,96 x 10^8 m - R_{Alfa Centauri} = 1,28 x R_{sol} Si pulsamos =C-c C-x \= además veremos de forma gráfica los subíndices y superíndices. También, como acabamos de ver, podemos utilizar listas: - De ítem normales. - También podemos utilizar listas de números: 1. Uno 2. Dos 3. Tres - Y también de definiciones: - Un concepto :: Su definición. - Otro concepto :: y su correspondiente definición. Y como se puede apreciar, podemos anidarlas unas dentro de otras. ** Tablas También tenemos una manera muy sencilla de organizar la información en tablas. | una columna | otra columna | |-------------+--------------| | esto | y aquello | Y lo vamos a dejar aquí, porque si no voy a escribir un tutorial de =org-mode= dentro de uno de /Emacs/.
Te aconsejo que vayas tecleando el texto, para que veas cómo va
reaccionando Emacs. Va cambiando los colores del texto ¿por qué?
¿qué está pasando?. Sencillamente, si has escrito correctamente la
extensión .org
, Emacs ha entrado en org-mode
y todo el texto que
estás escribiendo es automáticamente procesado por dicho modo.
Distingue los títulos, el marcado de texto, facilita su edición y
también lo muestra de modo que nosotros podamos distinguirlo de un
vistazo asignando colores.
Al llegar a la tabla, copia la primera fila y en la segunda introduce
sólo |-
y pulsa <TAB>
.
¿Cómo lo guardas? Pues puedes pulsar C-x C-s
o con el ratón y el
menú pinchando en File -> Save
.
La línea de estado
Una herramienta sobre la que quiero llamar la atención, que nos servirá para ver qué estado tiene cada buffer es lo que Emacs llama the mode line. Nos proporciona codificada toda la información que necesitamos sobre el buffer.
Si vemos la siguiente imagen:
Vemos ahí dos líneas de modo o de estado, una para cada buffer abierto. Podemos ver la siguiente estructura:
CS:CH-FR nombre-buffer POS LÍNEA (Mayor Menores)
El campo CS
es el código del sistema. Los valores habituales son U
para unicode, 1
para ISO Latin-1
... si aparece un -
significa
que no hay asignado para el buffer una página de códigos.
Después de ese campo suele haber un carácter :
, si aparece otra
cadena nos indicará que el fin de línea no es el habitual. En marcos
creados por emacsclient
el carácter que aparece es @
, pero como
todavía no hemos visto cómo funciona emacs en modo servidor, no
entraré más allá.
El campo CH
suele ser --
que indica que el buffer coincide con
el fichero guardado en disco. Si aparece **
indica que el buffer
se ha modificado y hay cambios sin guardar. Si aparece %%
quiere
decir que el buffer es de sólo lectura. Es posible que aparezca
%*
, lo que indicará que hemos modificado un buffer de sólo
lectura. Ha más variantes en este campo cuando se edita un fichero a
través de la red, pero no voy a entrar en ellas.
El campo nombre-buffer
es normalmente el nombre del fichero que
tenemos cargado en el buffer y coincide con él. Hay casos en que ese
nombre varía; por ejemplo, si cargamos dos ficheros con el mismo
nombre pero que están en directorios diferentes, el nombre podría ser
nombre-fichero<directorio>
. Además, algunos buffers especiales
mostrarán su nombre en formato *nombre-buffer*
.
El campo POS
nos indica la posición del buffer que vemos en la
ventana con respecto al total del contenido. Por ejemplo, si muestra
All
quiere decir, que en ventana estamos visualizando todo el
contenido del buffer. También puede aparecer Top
, que quiere decir
que estamos en la posición superior, Bot
indica que estamos al final
del mismo y normalmente tendrá un formato de 00%
, es decir, el
porcentaje de buffer que hay por encima de la parte superior de la
ventana.
El campo Línea
consiste en el carácter L
seguido por la línea
donde está situado el punto.
Por último, entre paréntesis, se encuentran los modos activos. El
primero es el modo Mayor
y sólo puede haber uno mayo. A continuación
aparecen los modos menores, que puede no haber o haber varios.
Conclusiones
¿Muchas teclas? ¿Imposible aprendérselas todas? Pues hay más, en la ayuda están todas detalladas. No obstante, para moverte cuentas también con la ayuda del ratón. Como ya he dicho antes, puede parecernos más rápido, pero no lo es, aunque quizá sí más intuitivo si estás acostumbrado a utilizarlo en entornos gráficos.
Tómate tu tiempo en acostumbrarte a la interface del editor, juega un poco con él, verás que enseguida lo tienes dominado.
Nota al pie de página:
Con el tiempo te darás cuenta que es más productivo no separar los dedos de las teclas para ir hasta el ratón, mover el cursor y pinchar en pichorros y chismáticos que no aportan valor añadido al proceso. Te aprenderás las combinaciones de teclas más frecuentes y hasta es posible que decidas quitarle el menú y la barra de herramientas a tu Emacs, como hacen muchos usuarios.
En la terminología de Emacs cargar el contenido de un fichero en un buffer se llama visitar.
Oirás hablar de paquetes de Emacs muchas veces y aprenderás a instalarlos también, pero de momento: no es el caso.