Una introducci�n r�pida a
GNU Emacs
Joaqu�n Ataz L�pez1

Contents

1  Panorámica general de Emacs
2  Los mandatos de Emacs
    2.1  Formas de invocar a los mandatos
        2.1.1  Invocación de mandatos por su nombre:
        2.1.2  Ejecución de mandatos mediante una combinación o secuencia de teclado:
    2.2  Forma de transcribir las secuencias de teclado
    2.3  Uso, en este manual, de las secuencias de teclas y de los nombres de mandatos
    2.4  Prefijos numéricos para los mandatos
    2.5  Cancelar y deshacer mandatos
3  Elementos de la pantalla de Emacs
    3.1  La barra de menús y la barra de herramientas
    3.2  El área de edición o ventana
    3.3  La l ínea de modo
    3.4  El área de eco y el minibuffer
4  Los modos de Emacs
    4.1  Los modos mayores de Emacs
        4.1.1  Modos mayores en general
        4.1.2  Seleccionar un modo mayor
        4.1.3  Listas de tareas al iniciar un modo (<<Hooks>>)
    4.2  Los modos menores
5  Edición básica con Emacs
    5.1  Operaciones con ficheros y con buffers
        5.1.1  Ficheros y buffers:
        5.1.2  Visitar (abrir) ficheros:
        5.1.3  Grabar en disco:
    5.2  Desplazamiento por el texto
    5.3  Selección de texto (la región)
    5.4  Borrar, eliminar y recuperar texto
        5.4.1  Borrar y eliminar texto
        5.4.2  Recuperar texto previamente eliminado
6  Operaciones de búsqueda y reemplazo
    6.1  Búsqueda en general
        6.1.1  Búsqueda incremental
        6.1.2  Repetir búsquedas anteriores
        6.1.3  Búsqueda no incremental y búsqueda por palabras
    6.2  Reemplazar texto
        6.2.1  Reemplazo normal de texto
        6.2.2  Reemplazo selectivo
    6.3  Cuestiones adicionales relativas a las operaciones de búsqueda
        6.3.1  Caracteres especiales (como insertarlos)
        6.3.2  Distinguir (o no) entre mayúsculas y minúsculas
    6.4  Otras órdenes de búsqueda y reemplazo
7  Expresiones regulares
    7.1  Concepto
    7.2  Operadores en las expresiones regulares (caracteres especiales)
        7.2.1  Operadores básicos de reemplazo
        7.2.2  Otros operadores de reemplazo
        7.2.3  Operadores de repetición
        7.2.4  Operadores que indican posición del texto buscado
    7.3  Incluir, como carácter de búsqueda, el identificativo de un operador
    7.4  Combinar expresiones regulares
    7.5  Operadores de agrupación
    7.6  Operaciones de reemplazo basadas en expresiones regulares
8  GNU Free Documentation License (Licencia GNU para Documentación Libre)

Sobre el presente documento

Inicialmente, cuando me propuse escribir el documento <<Creaci�n de ficheros LATEX- con GNU Emacs>> (que hoy d�a se puede descargar de ftp://ftp.dante.de/tex-archive/info/spanish/guia-atx), me plante� la posibilidad de dividirlo en dos partes. La primera contendr�a una introducci�n r�pida a Emacs y la segunda se referir�a al uso de sus funciones avanzadas para la creaci�n de ficheros LATEX-. Sin embargo, conforme fui redactando dicho documento me di cuenta de que, de un lado, era demasiado largo y conven�a aligerarlo y, sobre todo, hab�a una evidente descompensaci�n entre ambas partes: la primera era muy superficial y la segunda muy detallada.
En consecuencia decid� suprimir la primera parte, ya que, en mi opini�n, un buen documento debe tener un <<lector tipo>> y me era muy dif�cil imaginar al mismo lector tipo en ambas partes del documento. En la primera parte se resum�a una informaci�n mucho m�s amplia, y en la segunda se profundizaba sobre una informaci�n que no suele estar disponible.
En las p�ginas que siguen se reproduce la "primera parte" de aquel documento, que fue eliminada de la versi�n definitiva. En ella se contiene una introducci�n a Emacs en la que se explica el uso general de los comandos de Emacs, las distintas partes de su pantalla, el significado de sus <<modos>> mayores y menores, as� como las operaciones b�sicas de edici�n y una introducci�n a la sintaxis de las expresiones regulares.
Al respecto t�ngase en cuenta que se trata de reproducir el documento "tal y como estaba". Tan solo he escrito esta introducci�n explicativa, y he ajustado las referencias internas que pudiera haber a otras partes del documento que ya no est�n en �l. Pero no lo he reescrito, por lo que se sigue presuponiendo en �l que habr� una segunda parte centrada en la creaci�n de documentos LATEX- y un ap�ndice dedicado a la personalizaci�n de Emacs.
Asimismo, como no termin� de escribirlo, no he llegado tampoco a depurarlo. Y por "depuraci�n" entiendo realizar una comprobaci�n de que lo que aqu� digo funciona siempre y no s�lo en mi concreta distribuci�n. Al respecto debe tenerse en cuenta que muchas distribuciones de Linux introducen cambios en ciertos paquetes y que, adem�s, en el caso concreto de Emacs, suele haber ciertas diferencias entre su versi�n en modo gr�fico y su versi�n en modo texto. Tambi�n hay ciertas diferencias entre Emacs propiamente dicho y Xemacs (una versi�n gr�fica de Emacs). Pues bien: lo que aqu� se dice est� comprobado exclusivamente para la versi�n 21.3 de Emacs funcionando en modo gr�fico e instalado de manera est�ndar con la versi�n 9.0 de Linux SuSE.
No me he molestado en reescribir el documento, porque mi proyecto para el futuro, es el de escribir un aut�ntico manual de Emacs que sea completo. Eso lo har� cuando tenga tiempo. De momento, no obstante, ofrezco este documento al p�blico, tal y como est�, por si a alguien le fuera �til. Por lo tanto ruego que no se me hagan observaciones sobre su posible <<mejora>>, ya que no es mi intenci�n mejorarlo en el futuro, sino m�s bien jubilarlo.
Cuesti�n distinta es que se detecte alguna afirmaci�n incorrecta. En tal caso si agradecer� que se me comunique a [email protected].

1  Panor�mica general de Emacs

GNU Emacs posiblemente sea el editor de textos m�s potente que exista para sistemas Unix-Linux, lo cual es tanto como decir que se trata del editor de textos m�s potente que existe en t�rminos absolutos.
Las caracter�sticas que le hacen �nico son las siguientes:
Reconocimiento de formatos:  
Es lo primero que llama la atenci�n de Emacs, y lo que hace que una vez que nos hemos acostumbrado a �l se convierta en una herramienta insustituible.
Por reconocimiento de formatos hay que entender la posibilidad de detectar que cierto fichero sigue determinadas convenciones de sintaxis (correspondientes normalmente a un lenguaje de programaci�n o a un lenguaje de marcas) de tal modo que, una vez reconocido el formato al que se ajusta el texto del documento Emacs pueda proporcionar ciertos mandatos especialmente �tiles para ese tipo de documentos, as� como resaltar mediante procedimientos gr�ficos la sintaxis del documento, distinguiendo entre las instrucciones y los datos, e incluso diferenciando entre distintas categor�as de instrucciones.
Entre los formatos que Emacs es capaz de reconocer se encuentran numerosos lenguajes de programaci�n y -para lo que nos interesa en este documento- los formatos TEX- y LATEX-.
Por otra parte, es cierto que hoy d�a muchos otros editores han incorporado esta habilidad. Pero Emacs -que fue de los primeros en implementarla- sigue siendo capaz de reconocer m�s formatos que la mayor�a, y su dise�o, basado en "modos mayores de edici�n" se ajusta de manera m�s natural al manejo de diferentes tipos de ficheros.
Facilidad de configuraci�n y personalizaci�n:  
En Emacs casi todo es personalizable. Podemos crear mandatos nuevos, asignar combinaciones de teclas diferentes a las previstas por defecto, alterar ciertas variables de las que depende el funcionamiento del propio Emacs, etc. De hecho el propio nombre Emacs procede de una contracci�n de la expresi�n Editor de Macros2, porque fue concebido como eso: como un editor de macros; y recordemos que el t�rmino macro suele significar (aunque no siempre) mandato definido por el usuario de una determinada aplicaci�n dirigido a personalizarla.
Extensibilidad:  
La facilidad para configurar Emacs queda ampliamente superada por su extensibilidad.
Que Emacs es extensible significa que cualquiera que sepa Emacs Lisp (un dialecto de Lisp en el que est� escrita la mayor parte del propio Emacs) puede escribir nuevos mandatos de Emacs en dicho lenguaje de programaci�n e incorporarlos al sistema, incluso sobre la marcha, sin necesidad de reinstalar o reiniciar el propio Emacs.
Esta facilidad para extender y ampliar el sistema se traduce en que existen numerosos paquetes de ampliaci�n de Emacs que le permiten reconocer nuevos formatos, o le dotan de mandatos espec�ficos para ciertos formatos o para ciertos usos, haciendo que, en definitiva, Emacs sirva para casi todo. Y as� hay paquetes para convertir a Emacs en un lector de correo electr�nico, en un lector de noticias, en un entorno integrado de desarrollo, �e incluso en un calendario!
Emacs, sin embargo, no es un programa sencillo. Por un lado su extremada potencia hace que sean much�simas las funciones o mandatos que hay que aprender. Pero, por otra parte, Emacs es muy peculiar y su terminolog�a y conceptos implicados no siempre se asemejan a los de otras aplicaciones de finalidad similar.
Esta �ltima observaci�n ha constituido para m� un verdadero mar de dudas a la hora de redactar este texto ya que no sab�a si, al referirme a Emacs, utilizar su terminolog�a espec�fica o utilizar la terminolog�a est�ndar que puede ser m�s familiar para el lector y ayudarle a entender mejor de qu� se trata. Al final he optado por un criterio intermedio: siempre explico la terminolog�a propia de Emacs. Pero cuando esta difiere de la m�s extendida, y la diferencia es meramente terminol�gica (no conceptual) a la tarea en cuesti�n me refiero, indistintamente, con la terminolog�a normal o con la de Emacs con lo que creo que facilitar� que el lector se vaya familiarizando poco a poco con ella. Por el contrario, si la diferencia terminol�gica encierra una diferencia conceptual, tras explicarla, procurar� usar s�lo la terminolog�a de Emacs.

2  Los mandatos de Emacs

Emacs funciona mediante la ejecuci�n de mandatos: abrir o cerrar un fichero, insertar texto en �l o borrarlo, desplazar el cursor por el texto, realizar una b�squeda... todo se hace mediante mandatos. En teor�a incluso escribir una letra es fruto de un mandato3.
Desde el punto de vista interno los mandatos de Emacs son funciones -normalmente escritas en el lenguaje Elisp, que es como suele abreviarse el nombre de Emacs-Lisp- pero desde el punto de vista del usuario son mandatos, es decir: acciones que se realizan cuando pulsamos determinada combinaci�n de teclas, o cuando seleccionamos una opci�n del men�.

2.1  Formas de invocar a los mandatos

Hay b�sicamente tres maneras de ejecutar un mandato, aunque s�lo la primera de ellas funciona siempre y para cualquier mandato:
  1. Invocar al mandato por su nombre, indic�ndole a Emacs que queremos ejecutar un mandato de esa manera.
  2. Pulsar en el teclado la combinaci�n de teclas a la que cierto mandato est� asociada.
  3. Seleccionar el mandato del men� o de la barra de herramientas de Emacs.

2.1.1  Invocaci�n de mandatos por su nombre:

El primero de los procedimientos es el �nico que funciona siempre, pues no todos los mandatos tienen una combinaci�n de teclas asociada a ellos, ni constituyen una opci�n de la barra de men�s o de la barra de herramientas.
Para ejecutar un mandato invoc�ndolo por su nombre, lo primero que hay que hacer es decirle a Emacs que queremos introducir el nombre de un mandato para ejecutarlo. Eso lo podemos hacer de dos maneras:
En Emacs ambas acciones se consideran la misma: en ambos casos habremos pulsado la tecla a la que Emacs llama meta (en seguida se ver� qu� significa eso). Tras ello se activar� una parte de la interfaz de Emacs llamada "minibuffer" y el cursor saltar� autom�ticamente all� para que podamos escribir el nombre del mandato a ejecutar. A la hora de hacerlo recu�rdese que Emacs distingue entre may�sculas y min�sculas. Si en un momento dado tenemos dudas sobre c�mo se llama la funci�n deseada, pulsando la tecla SPC obtendremos una lista de todos los mandatos de Emacs cuyo nombre comienza igual que la parte que hemos tecleado; funci�n esta �ltima a la que se denomina "autocompletado". Tras terminar de escribir el nombre del mandato y pulsar la tecla RET, �ste se ejecutar�.

2.1.2  Ejecuci�n de mandatos mediante una combinaci�n o secuencia de teclado:

Pero pocas veces se ejecutan los mandatos de esa manera. Lo m�s normal para ejecutar un mandato en Emacs es pulsar la combinaci�n de teclas a la que est� asociado. Aunque, claro est�, no todos los mandatos est�n asociados a alguna combinaci�n de teclas: s�lo lo est�n los m�s frecuentemente utilizados.
Atendiendo al n�mero de teclas necesarias para lanzar un mandato, �stos se clasifican en las siguientes categor�as:
Pero a todo esto: �Qu� es la tecla Meta?
Vengo diciendo que las secuencias de teclado implican siempre a la tecla Control o a la tecla Meta. Y todo el mundo sabe qu� es la tecla Control y d�nde est�. Pero en la mayor�a de los teclados no hay ninguna tecla que se llame meta. Y es que la tecla meta, en realidad, m�s que una tecla f�sica es una especie de concepto o tecla virtual.
Esto es as� porque, de un lado, existen y han existido -y sin duda existir�n- numerosos tipos de teclados y ello no tanto por la existencia de teclados para los distintos idiomas sino, fundamentalmente, atendiendo a la arquitectura del ordenador y al sistema operativo utilizado. Y as�, por ejemplo, el teclado de los ordenadores Apple es distinto del de los Pcs, y en estos �ltimos la famosa tecla "win" no apareci� hasta el lanzamiento del sistema operativo Windows 95.
Pues bien: Emacs fue dise�ado para funcionar en cualquier ordenador, con cualquier teclado. Por ello sus autores decidieron que necesitaban dos teclas de cambio, es decir: dos teclas que se pudieran pulsar simult�neamente con otras alterando su significado. A estas dos teclas las llamaron, respectivamente, Control y Meta, y es la implementaci�n o compilaci�n de Emacs para cada sistema operativo y arquitectura de hardware la encargada de ocuparse de que haya una tecla que funcione como tecla control y otra que funcione como tecla meta.
En la pr�ctica la tecla control se asigna a la tecla del mismo nombre que suele haber en casi todos los teclados, y la tecla Meta se asigna -en los teclados espa�oles ordinarios- a dos teclas f�sicas: La tecla Alt-izquierda y la tecla Escape. Una y otra funcionan de modo diferente:
Como ejemplo de lo dicho recordemos lo que antes se�al� sobre la invocaci�n de mandatos por su nombre (p�gina pageref): dije que hab�a que pulsar M-x (Meta-x) para indicar a Emacs que se iba a introducir un mandato, y despu�s a�ad� que ese efecto lo pod�amos conseguir de dos maneras: pulsando simult�neamente Alt y "x", o pulsando primero ESC y luego "x".
Pudiera pensarse que ser�a m�s f�cil dejarse de zarandajas y, al menos en manuales como este, dirigidos a absolutos novatos, decir Alx-x en lugar de M-x. Sin embargo creo que es �til seguir hablando de la tecla Meta ya que:

2.2  Forma de transcribir las secuencias de teclado

Dado que Emacs informa (en el �rea de eco) sobre la secuencia de teclado que se est� introduciendo, en la documentaci�n de Emacs siempre se acoje la misma convenci�n para transcribir las secuencias de teclado. Esta convenci�n es la siguiente:

2.3  Uso, en este manual, de las secuencias de teclas y de los nombres de mandatos

Las secuencias de teclas son m�s f�ciles de recordar que los nombres de mandatos8, y desde luego m�s r�pidas de teclear. Por ello es corriente que en la documentaci�n sobre Emacs se haga referencia a los mandatos no por su verdadero nombre, sino por la combinaci�n de teclas a que est�n asociados.
Sin embargo, el nombre de los mandatos, aunque no siempre haya que recordarlo, es importante; sobre todo para la personalizaci�n de Emacs, en la que a los mandatos hay que denominarlos por su nombre.
Esta es la raz�n de que en este manual aunque muchas veces me refiera a los mandatos por sus teclas asociadas, siempre se recoja el nombre real del mandato. Al menos as� se hace la primera vez que el mandato es mencionado.

2.4  Prefijos num�ricos para los mandatos

Hay mandatos de Emacs que necesitan alg�n argumento el cual normalmente se introduce en el minibuffer. Pero casi todos los mandatos de Emacs aceptan un argumento num�rico que se puede introducir en la secuencia de teclado que provoca la ejecuci�n del mandato. Estos argumentos num�ricos normalmente se interpretan como un factor de repetici�n, es decir: provocan que el mandato se repita cierto n�mero de veces; pero a veces tienen otro significado.
A este tipo de argumentos se les denomina argumento prefijo, porque cuando el mandato se ejecuta mediante una secuencia de teclado, deben introducirse antes que el mandato propiamente dicho.
Para introducir el argumento num�rico hay dos procedimientos:
As�, por ejemplo, las siguientes tres secuencias de teclado son equivalentes:
   C-u 3 C-p
   ESC 3 C-p
   Alt-3 C-p

En los tres casos estamos indicando al mandato que se ejecute con el argumento num�rico 3.
Por otra parte se dice que existe un argumento num�rico vac�o cuando se pulsa seguido inmediatamente del mandato que sea, pero sin introducir ning�n n�mero concreto. En estos casos Emacs env�a como argumento num�rico por defecto el n�mero 4 (�Vaya usted a saber por qu�!).
Tambi�n es posible anidar los argumentos num�ricos. As�, por ejemplo, si introducimos el mandato , Emacs interpretar�a lo siguiente:

2.5  Cancelar y deshacer mandatos

Aunque acabamos de iniciar el aprendizaje de Emacs, hay dos mandatos que conviene que sean los primeros en ser aprendidos: el mandato de cancelaci�n y el mandato para deshacer la �ltima acci�n.
Cancelar un mandato:  
Cuando empezamos a introducir un mandato -cosa que se detecta por el uso de las teclas Control o Meta- Emacs espera hasta que hayamos escrito un mandato existente. Mientras no lo hayamos hecho considera que cualquier pulsaci�n de teclas que hagamos forma parte del mandato que se est� introduciendo. Pero puede ocurrir que hayamos cambiado de idea, o que nos hayamos equivocado en la secuencia de teclas y queramos anular la introducci�n del mandato. En estos casos lo mejor que podemos hacer, para recuperar el control, es pulsar que ejecuta un mandato cuya utilidad est� en cancelar el mandato que estuviera ejecut�ndose o escribi�ndose.
El mandato ejecutado por se denomina y su utilidad es m�s general de lo que se acaba de decir: Siempre que nos encontremos en el minibuffer, pulsando cancelamos la tarea que se est� ejecutando y volvemos a la anterior o, si est�bamos en el primer nivel de ejecuci�n, a la ventana de edici�n. Por eso a veces, en ediciones recursivas, para recuperar totalmente el control es preciso pulsar varias veces.
Deshacer la acci�n de un mandato:  
Si tras ejecutar un mandato cambiamos de idea, podemos deshacer su acci�n mediante el mandato (, tambi�n asociado a ). Ejecutando sucesivas veces este mandato iremos deshaciendo las �ltimas acciones en el orden inverso a aquel en el que se ejecutaron; y para deshacer exclusivamente acciones que afecten a la regi�n, hay que pulsar (sobre la regi�n v�ase la secci�n 5.3, p�gina 5.3).

3  Elementos de la pantalla de Emacs

En un sistema Unix-Linux, Emacs puede ejecutarse en modo de s�lo texto o en modo gr�fico, seg�n est� o no activo el sistema X-Window. Dependiendo de la manera en que Emacs se ejecute su aspecto ser� muy diferente. Sin embargo las partes de la pantalla de Emacs siempre ser�n las mismas y, en el fondo, la diferencia fundamental entre ejecutar o no Emacs en modo gr�fico se encuentra en si se podr� o no hacer uso del rat�n.
Las partes de la pantalla de Emas son las siguientes, contadas desde arriba hacia abajo:
Veamos estas partes por separado.

3.1  La barra de men�s y la barra de herramientas

La barra de men�s se encuentra en la l�nea superior del marco ocupado por Emacs. En ella se agrupan varios mandatos que se supone que son de utilizaci�n m�s frecuente que los dem�s, y que adem�s cambian seg�n el modo mayor en que Emacs est� funcionando (V�ase, sobre modos mayores, la secci�n 4.1 en p�g, pageref).
Como todos los mandatos existentes en la barra de men�s son ejecutables por la v�a ordinaria, en este documento, a efectos de simplificarlo, en general no mencionar� -al hablar de un concreto mandato- si forma parte o no de la barra de men�s, la cual, al final no es sino una forma alternativa para ejecutar ciertos mandatos y, por ello, prescindible.
El usuario interesado simplemente tiene que ir abriendo los men�s y comprobar las opciones que encierran y los mandatos que ejecutan. Algunos de ellos se explican en este documento y otros no.
Y exactamente lo mismo hay que decir de la barra de herramientas, a�adiendo que, adem�s, esta s�lo existe cuando Emacs se ejecuta en modo gr�fico: En ella existen una serie de botones cada uno de los cuales ejecuta un mandato normal cuando se hace click sobre �l con el rat�n. Por lo tanto tambi�n es un modo alternativo para la ejecuci�n de mandatos y no volver� a referirme a ella en este documento.

3.2  El �rea de edici�n o ventana

Se trata de la parte m�s amplia de la pantalla de Emacs. En ella se realizar� la edici�n. Esta zona puede a su vez dividirse en �reas m�s peque�as a cada una de las cuales se la denomina ventana. En tal caso cada una de esas ventanas puede editar un buffer distinto.
Debe hacerse notar que en este punto la terminolog�a de Emacs difiere de la terminolog�a m�s corriente. En los sistemas gr�ficos una ventana es una zona de la pantalla en la que cierta aplicaci�n produce su salida. A eso Emacs le llama marco. En modo de s�lo texto Emacs s�lo puede tener un marco pero en modo gr�fico puede tener muchos marcos diferentes (a los que otras aplicaciones llamar�an ventanas). Ahora bien: un marco puede dividirse en ventanas que son zonas diferenciadas dentro del marco en donde se editan buffers distintos. A lo que Emacs llama ventana otras aplicaciones llamar�an paneles
La divisi�n de la ventana principal en subventanas puede ser realizada autom�ticamente por Emacs para llevar a cabo ciertas tareas. Fundamentalmente cuando tiene que enviar al usuario un mensaje que no cabe en el �rea de eco (v�ase la secci�n 3.4, p�g. pageref). En tales casos normalmente la ventana adicional ser� autom�ticamente cerrada por Emacs cuando termine la tarea que provoc� su apertura. En los dem�s casos habr� que cerrarla expresamente.
Las �rdenes m�s importantes en relaci�n con las ventanas son las siguientes:
Teclado Mandato Acci�n
C-x 0 delete-window Borra la ventana activa
C-x 1 delete-other-windows Borra todas las ventanas menos la activa
C-x 2 split-window-verticaly Divide horizontalmente la ventana activa en dos ventanas
C-x 3 split-window-horizontaly Divide verticalmente la ventana activa en dos ventanas
C-x o other-window Lleva el cursor a la pr�xima ventana
C-M-v scroll-other-window Desplaza hacia abajo el texto de la pr�xima ventana (como si en ella se hiciera AvP�g)

3.3  La l�nea de modo

La l�nea de modo se encuentra en la parte inferior de la ventana de edici�n. Por lo tanto si hay varias ventanas cada una de ellas dispondr� de su propia l�nea de modo, la cual, en modo de s�lo texto se ve en v�deo inverso, y en modo gr�fico tiene un aspecto tridimensional y un color gris.
Esta l�nea de modo ofrece informaci�n variada sobre el buffer que se est� editando en la ventana. Esta informaci�n se muestra en el siguiente formato:
sc:mod nombrebuf (mayor menores) - Pos-
Cada una de estas partes significa lo siguiente:

3.4  El �rea de eco y el minibuffer

La �ltima l�nea de la pantalla de Emacs se usa para dos cosas distintas. En ella se muestra el �rea de eco y en ella se ubica tambi�n el minibuffer.
El �rea de eco es la zona en la que Emacs muestra los mensajes que tiene que dirigir al usuario. Estos mensajes se generan normalmente despu�s de la ejecuci�n de un mandato, y pueden advertir de alg�n error, o tambi�n pueden informar del resultado de la ejecuci�n del mandato. Cuando tecleamos secuencias de teclado complejas que est�n asociadas a mandatos, esta zona de la pantalla tambi�n nos puede servir para ver qu� parte del mandato hemos tecleado ya.
No obstante este �ltimo eco es un <<eco retardado>> es decir: cuando empezamos a escribir un mandato no se refleja inmediatamente, sino que es preciso hacer una pausa moment�nea hasta que se produzca el eco. Pero una vez que �ste ha empezado, ya no hay m�s retardos.
La existencia de este retardo determina, por su parte, que no haya nunca eco en los mandatos simples, que constan de un solo golpe de teclado.
El minibuffer es una peque�a ventana que Emacs utiliza cuando necesita que el usuario introduzca cierta informaci�n adicional para la ejecuci�n de un mandato. Por ejemplo: si ejecutamos el mandato que abre un fichero, habr� que indicar c�mo se llama el fichero que queremos abrir, y ello se har� en el minibuffer.
Como el minibuffer y el �rea de eco residen en la misma parte de la pantalla de Emacs, es el propio Emacs el que decide cuando activar uno y cuando activar otro. Cuando se active el minibuffer el cursor se colocar� autom�ticamente en �l, y cuando se desactive volver� a la ventana de edici�n.

4  Los modos de Emacs

4.1  Los modos mayores de Emacs

4.1.1  Modos mayores en general

Para entender lo que son los modos mayores de Emacs hay que partir de la idea de que Emacs es altamente configurable. En �l podemos con facilidad a�adir mandatos o modificar la forma en la que trabaja un mandato. Podemos cambiar el tipo de letra o el color de la misma para todo el texto o s�lo para parte de �l, el sangrado, etc.
Pues bien: partiendo de lo anterior los dise�adores de Emacs se preguntaron si no ser�a conveniente preparar configuraciones alternativas que optimizaran el funcionamiento de Emacs para ciertos tipos de ficheros especialmente conocidos, y el d�a en que se contestaron a s� mismos que esa era una buena idea, inventaron los modos mayores de Emacs.
Un modo mayor de Emacs no es sino una especie de proconfiguraci�n o personalizaci�n de Emacs que lo optimiza para trabajar con ciertos tipos de ficheros. Por ejemplo: con ficheros de texto normal, o con ficheros que contengan programas escritos en C, o en Java, o con ficheros HTML... Y por supuesto, con ficheros escritos en TEX- o en LATEX-.
�En qu� consiste la optimizaci�n para trabajar con cierto tipo de ficheros? Pues eso depende del tipo de ficheros que sea. En todo caso normalmente el ajuste que los distintos modos mayores realizan se traduce en lo siguiente:
Es decir: mediante los modos mayores podemos convertir a Emacs en un editor especializado para numerosos tipos de ficheros: tantos como modos de Emacs hay.
Todos los modos mayores se agrupan en tres categor�as: Modos relacionados con ficheros de texto plano o de texto con marcas (en donde se incluyen los modos TEX- y LATEX-), modos relativos a lenguajes de programaci�n (y aqu� Emacs es capaz de manejar cerca de treinta lenguajes de programaci�n diferentes), y modos para ficheros de prop�sitos espec�ficos (ficheros de correo electr�nico, ficheros dirigidos a comunicarse con la shell, etc).

4.1.2  Seleccionar un modo mayor

Como el modo mayor en el que se est� afecta a numerosos aspectos del funcionamiento de Emacs, algunos de ellos b�sicos, estos son incompatibles entre s�, es decir: en cada momento s�lo puede estar activo un modo mayor: cuando activamos uno, desactivamos el anterior. En la l�nea de modo (v�ase secci�n 3.3, p�g. pageref) se nos informa siempre del nombre del modo activo.
Cuando se abre un fichero, normalmente Emacs selecciona correctamente el modo mayor adecuado para ese fichero atendiendo a su extensi�n. Pero a veces la extensi�n de los ficheros es ambigua. Un fichero de extensi�n .tex, por ejemplo, puede albergar un texto escrito en LATEX-, en plain TEX-, en AmsTEX-, en infoTEX-, etc.
Por ello si Emacs no ha seleccionado correctamente el modo adecuado, podemos ser nosotros mismos quienes indiquemos directamente el modo mayor en el que queremos trabajar. Para ello hay que pulsar y escribir el nombre del modo seguido de . Por ejemplo: o . M�s tarde, si queremos volver al modo que Emacs asignar�a por defecto a dicho fichero, nos bastar� con ejecutar el mandato .
Tambi�n podemos escribir en el mismo fichero la informaci�n necesaria para que Emacs autom�ticamente cargue el modo adecuado con independencia de la extensi�n del fichero. Eso lo podemos hacer de dos maneras:

4.1.3  Listas de tareas al iniciar un modo ()

En Emacs se denomina Hook a un tipo especial de variable cuyo significado es el de contener dentro de s� una lista de tareas que deben realizarse por orden. Estas tareas pueden ser de muy distinta naturaleza: ejecuci�n de funciones de Elips, asignaci�n de valor a ciertas variables, ejecuci�n de aplicaciones externas, etc.
Ciertos modos mayores cuentan con una variable de este tipo que se ejecuta cuando el modo se activa. Por lo tanto, modificando el contenido de esta variable podremos personalizar el funcionamiento del propio modo. Para ello suele usarse una funci�n denominada que a�ade una tarea a la lista de tareas. As� por ejemplo la sentencia lisp
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)

A�ade a la lista de tareas que se ejecuta cuando se activa el modo LaTeX una tarea consistente en "activar" reftex, que es un modo menor especialmente �til para ficheros LATEX-.

4.2  Los modos menores

A diferencia de los modos mayores, que son incompatibles entre s�, en Emacs se llama modo menor al modo de funcionamiento en el que cierta utilidad se encuentra activada. Cada modo menor activa una manera especial de comportarse, pero estas son compatibles entre s�, es decir: podemos funcionar simult�neamente con numerosos modos menores.
Los modos menores se activan o desactivan escribiendo seguido del nombre del modo y de la palabra aunque tambi�n podemos hacer que al activar un modo mayor determinado, se activen autom�ticamente ciertos modos menores. Para ello debe tratarse de un modo mayor cuya activaci�n admita una lista de tareas (es decir, en donde se pueda usar el mandato y que los modos menores a activar admitan el m�todo llamado . En tales casos la sentencia elips
  (add-hook 'NombreMayor-mode-hook 'turn-on-NombreMenor)

producir� la activaci�n autom�tica del modo menor llamado NombreMenor cada vez que se entre en el modo mayor denominado NombreMayor.
De otro lado, el mandato de activaci�n de los modos menores, adem�s, funciona como un conmutador: si el modo estaba activado lo desactiva y si estaba desactivado lo activa. En un momento dado podemos saber si cierto modo menor est� o no activado comprob�ndolo en la l�nea de modo (v�ase secci�n 3.3 en p�g. pageref), si bien hay algunos modos menores que no se ven reflejados en ella, y respecto de otros, en lugar del verdadero nombre del modo se muestra una abreviatura.
Por lo dem�s los modos menores son muy diferentes entre s�. Algunos son globales, es decir: afectan a cualquier buffer editado en la sesi�n de trabajo actual. Otros son locales: se deben activar o desactivar para cada buffer individual. Los hay que pueden funcionar como modo mayor y como modo menor, y en muchos de ellos el nombre del modo es tambi�n el nombre de una variable que controla su funcionamiento.

5  Edici�n b�sica con Emacs

5.1  Operaciones con ficheros y con buffers

5.1.1  Ficheros y buffers:

La precisi�n terminol�gica de Emacs es francamente admirable, aunque contribuye a hacer que parezca m�s diferente a los dem�s programas de edici�n de lo que realmente es.
Uno de los ejemplos m�s claros de lo que acabo de decir lo tenemos en lo que es objeto de edici�n. Casi todas las aplicaciones de edici�n hablan de abrir, cerrar, modificar, imprimir o guardar ficheros. Emacs, sin embargo, no aplica todas estas nociones, a los ficheros, sino que alguna de ellas se aplica a los buffers.
Se entiende por buffer una zona de memoria en la que se encuentra el texto objeto de edici�n, mientras que se entiende por fichero un conjunto de datos almacenado en el disco o en alg�n soporte similar que lo conserve en su estado actual. Es decir: un fichero es -como tal fichero- estable e inmodificable (aunque podemos borrarlo y crear otro fichero con el mismo nombre y distinto contenido); un buffer, por el contrario, se encuentra en la memoria RAM, es vol�til y esencialmente modificable.
Cuando leemos un fichero, lo que hacemos es copiar su contenido a una zona de memoria (a un buffer), y durante la edici�n lo que modificamos es esa zona de memoria, el fichero como tal permanece inalterado hasta que expl�citamente demos la orden de grabar en el disco las modificaciones.
Adem�s, no todos los buffers que hay en Emacs corresponden a ficheros. Cuando Emacs se inicia se abren dos buffers que no est�n asociados a ning�n fichero: y (obs�rvese que el nombre de ambos buffers empieza y acaba por un asterisco, lo que indica que no es un buffer asociado a un fichero). Asimismo, cuando desde Emacs se ejecuta un mandato externo, se crear� un buffer para recoger la posible salida de dicho mandato, o cuando se llama a alguna funci�n de ayuda, esta se muestra en un buffer, etc.
Es decir: en Emacs abrimos ficheros, y trabajamos con buffers los cuales podemos, finalmente, grabar como ficheros.

5.1.2  Visitar (abrir) ficheros:

Otra de las peculiaridades terminol�gicas de Emacs -esta menos justificada que la anterior- es que a la operaci�n de abrir un fichero se le llama visitar al fichero.
El mandato para visitar un fichero es (). Mediante este mandato Emacs leer� desde el disco un fichero y copiar� su contenido en un buffer donde podremos editarlo. Tras introducir el mandato habr� que facilitar el nombre del fichero, el cual debe ser escrito en el minibuffer. Podemos aqu� ayudarnos de la funci�n de auto-completado del shell, es decir: conforme vayamos navegando por nuestro �rbol de directorios, pulsando la barra espaciadora haremos que -en un buffer aparte- Emacs nos muestre cu�ntos ficheros hay en el directorio actual cuyo nombre coincida con la parte que hayamos escrito, y pulsando la tecla TAB haremos que se complete el nombre escrito con el primer fichero que coincida.
Al introducir el nombre del fichero recu�rdese que Unix-Linux distingue entre may�sculas y min�sculas.
Por otra parte Emacs carece de �rdenes espec�ficas para la creaci�n de ficheros nuevos. Un fichero nuevo se crear� simplemente cuando ordenamos a Emacs abrir un fichero inexistente. Es decir: si yo quiero crear un fichero llamado "prueba.tex" debo pulsar y a continuaci�n escribir y pulsar RET: Emacs crear� el fichero indicado, de la misma manera que, si hubiera existido, lo habr�a abierto.
Una operaci�n parecida a la anterior es la de abrir un directorio, lo que se puede hacer con (). Esta orden abre, en un buffer independiente un listado con el contenido del directorio que se le indique, permitiendo luego abrir, renombrar, borrar, imprimir, etc., cualquiera de los ficheros contenidos en dicho directorio.

5.1.3  Grabar en disco:

Para grabar en disco las modificaciones de un fichero, la orden fundamental es (). Tras la ejecuci�n de este mandato, el fichero original ser� sustituido por el contenido de nuestro buffer. Si intentamos grabar un buffer que originariamente no era un fichero, Emacs nos preguntar� por el nombre con el que queremos almacenar el buffer.
Si queremos preservar el contenido del fichero original, podemos grabar el buffer con otro nombre. Para ello debemos usar la orden (). As�, tras indicar el nuevo nombre, conservaremos la versi�n original del fichero.
Asimismo, si estamos editando simult�neamente varios buffers, podemos pulsar () para que Emacs compruebe, para cada uno de los buffers, si ha sido modificado y en caso afirmativo nos preguntar� si deseamos guardar los cambios.

5.2  Desplazamiento por el texto

Aunque Emacs contiene un completo juego de mandatos para facilitar el movimiento del cursor -y los fan�ticos de Emacs dicen, adem�s, que esos mandatos son m�s efectivos que las teclas del cursor10- lo cierto es que las teclas del cursor funcionan y, por lo tanto, en una introducci�n brev�sima como la actual pretende ser, no tiene sentido extenderme m�s en este punto. Por lo tanto asumase que las teclas de flecha mueven el cursor en la direcci�n indicada por cada una de ellas, las teclas inicio y fin nos desplazan, respectivamente, al principio o al final de la l�nea, y las teclas ReP�g y AvP�g nos desplazan de pantalla en pantalla. Adem�s de estos movimientos b�sicos, disponemos de los siguientes mandatos:
Desplazarse a Teclado Alternativo Mandato
Principio del buffer C-Inicio M-< beginning-off-buffer
Final del buffer C-Fin M-> end-off-buffer
Pr�xima palabra M-Derecha M-f forward-word
Palabra anterior M-Izquierda M-b backward-word
Pr�ximo p�rrafo C-Arroba forward-paragraph
P�rrafo anterior C-Abajo backward-paragrap
L�nea central M-r move-to-window-line
Idem C-l recenter
Las dos �ltimas funciones son en realidad antit�ticas, y si en el cuadro resumen he puesto que ambas hacen lo mismo, es por la dificultad que tiene explicar en una sola l�nea de texto la sutil diferencia entre ellas: coloca el cursor en el extremo izquierdo de la l�nea central de la pantalla, mientras que coloca la l�nea sobre la que est� el cursor en el centro de la pantalla. O sea: la primera mueve el cursor sin producir desplazamiento de texto (scroll), la segunda deja el cursor en su lugar pero produce desplazamiento de texto.
En fin: por �ltimo debo decir que las funciones M-Izquierda y M-Derecha tambi�n funcionan con la tecla Control (aunque s�lo en modo gr�fico y exclusivamente en Emacs, no as� en Xemacs).
A estas funciones se pueden a�adir los mandatos no asociados a ninguna combinaci�n de teclas: y que desplazan el cursor, respectivamente, al car�cter o a la l�nea que se le indique. Esta �ltima funci�n es bastante �til cuando se est� depurando un documento LATEX-, ya que el fichero .log generado por el compilador informa -en caso de fallo o de advertencia-, acerca de en qu� l�nea se produjo el fallo.

5.3  Selecci�n de texto (la regi�n)

La selecci�n de texto es uno de los puntos en los que Emacs se mantiene al margen del resto de las aplicaciones. En terminolog�a y en secuencias de teclado.
Aunque la diferencia terminol�gica est� basada en una diferencia conceptual:
En realidad para Emacs en cada buffer hay dos indicadores internos, uno que se llama marca y otro que es el cursor (al que Emacs denomina punto). Se llama regi�n al bloque de texto que hay entre la marca y el cursor. La regi�n, por lo tanto, siempre existe, lo que ocurre es que, normalmente, no es visible y cuando no lo es est� inactiva, salvo para ciertos mandatos.
La regi�n, por otra parte, s�lo est� visible -como regla general- en el periodo de tiempo que transcurre desde que se fija la marca en alg�n nuevo lugar hasta que se ejecuta un mandato que no sea de movimiento del cursor (incluyendo en este grupo los de b�squeda incremental.).
Lo anterior se ve m�s claro con ejemplos. Supongamos que ejecutamos el mandato que selecciona todo el p�rrafo, en realidad lo que habremos hecho es, primero mover el cursor al final del p�rrafo, establecer all� la marca y luego llevar el cursor al principio del p�rrafo, de modo que la regi�n se extiende desde la marca hasta el cursor. Si inmediatamente despu�s de ejecutado el mandato movemos el cursor veremos que la regi�n va siguiendo al cursor desde el final del p�rrafo, lugar en donde fue fijada la marca por el mandato . Ahora bien, si ejecutamos cualquier mandato que no sea de movimiento del cursor (por ejemplo, insertamos un espacio en blanco, o pulsamos ), aparentemente la regi�n desaparece; en realidad sigue all� pero deja de estar visible y activa.
Si luego llevamos el cursor a otro lugar -por ejemplo tres p�rrafos m�s abajo- y pulsamos (), veremos que la regi�n vuelve a aparecer y se extiende del lugar en donde estaba el cursor, hasta el lugar en donde antes hab�amos fijado la marca, ello es porque el �ltimo mandato ejecutado lo que ha ello es poner la marca donde estaba el cursor, y llevar el cursor a donde estaba la marca, haciendo visible la regi�n como ocurre siempre que se fija la marca en un nuevo lugar mientras no se ejecute un mandato que no consista en mover el cursor.
Eso de que la selecci�n siga al cursor vaya a donde vaya puede llegar a hacerse molesto. Para detenerlo basta con ejecutar cualquier mandato o pulsar (lo que tambi�n es ejecutar un mandato).
La principal diferencia entre la forma de funcionar que tiene lo que Emacs llama regi�n y la forma en la que normalmente funciona la selecci�n en otras aplicaciones, se encuentra en que normalmente cuando se realiza una acci�n y hay un bloque de texto seleccionado, esta acci�n -cualquiera que sea- afecta a toda la selecci�n. En Emacs por el contrario la regla general es que los mandatos que trabajan sobre la regi�n y los que no trabajan sobre ella son distintos. Y aunque esa regla tiene excepciones, estas no son muchas. Normalmente los mandatos que trabajan sobre la regi�n se identifican porque en su nombre aparece la palabra "region".
En particular en Emacs, el hecho de insertar un car�cter, o pulsar la tecla SUPR o la tecla RETRO cuando un bloque de texto est� seleccionado, no implica el que el texto seleccionado sea sustituido por el car�cter pulsado, cosa que s� suele ocurrir en otras aplicaciones.
En fin: los mandatos m�s importantes para fijar la regi�n son los siguientes:
Teclado Mandato Efecto
Fija el principio de la regi�n en el lugar donde se encuentre el cursor
Selecciona una palabra hacia delante
Selecciona el p�rrafo actual
Selecciona todo el buffer
Selecciona todo lo que est� encerrado en los par�ntesis m�s pr�ximos
El primero de los mandatos recogidos es el m�s corriente y est� asociado, adem�s de a , a : tras ejecutarlo, la selecci�n se extender� all� a donde llevemos el cursor, con independencia del modo en que lo traslademos: con alguno de los mandatos para mover el cursor, haciendo click con el rat�n, o ejecutando alguna de las funciones de b�squeda.
no es un mandato demasiado �til, pues selecciona una sola palabra, aunque lo ejecutemos varias veces seguidas. Para seleccionar m�s de una palabra hay que indicarle -como par�metro num�rico- el n�mero de palabras a seleccionar.
Asimismo, lo que hace es seleccionar un bloque de texto encerrado entre determinados s�mbolos de apertura y ciere que pueden variar seg�n el modo mayor en el que se est� ejecutando Emacs. Para los modos TEX- y LATEX- esos s�mbolos son los par�ntesis.
Por otra parte, en Emacs la marca es �til, no s�lo como punto de partida para establecer la regi�n, sino tambi�n para se�alar un lugar del buffer al que pretendemos volver m�s tarde de manera r�pida. Esto es as� porque cada buffer de Emacs recuerda los 16 �ltimos lugares en los que se coloc� la marca. A esto se le denomina el c�rculo de marcas y nos permite movernos con rapidez mediante los mandatos y , o sea: los mandatos para establecer la posici�n de la marca, pero con un prefijo num�rico indicador del n�mero de marca al que queremos retroceder. Cuando por este procedimiento saltamos a la posici�n que en alg�n momento anterior tuvo la marca, esta posici�n se coloca en la �ltima posici�n dentro del c�rculo de marcas.

5.4  Borrar, eliminar y recuperar texto

Esta es una de las operaciones m�s corrientes en la edici�n de textos, y supongo que a estas alturas a nadie le extra�ar� que la terminolog�a de Emacs, una vez m�s, sea diferente pero que, al mismo tiempo, Emacs sea m�s potente que la mayor parte de las aplicaciones.
Empecemos por recordar la terminolog�a cada vez m�s extendida, para as� poder se�alar con claridad las diferencias con Emacs.
Numerosas aplicaciones de manejo de texto distinguen las siguientes tres acciones posibles:
Las principales caracter�sticas de estas operaciones son dos: La primera es que el texto existente en esa zona de memoria intermedia, puede insertarse tantas veces como queramos, y la segunda es que cada vez que efectuamos una operaci�n de copiar o cortar, el contenido de esa zona de memoria es sustituido, de modo que a partir de ahora ya s�lo podremos insertar (pegar) el nuevo texto.
Pues bien: en Emacs, adem�s de cambiar la terminolog�a, cambia tambi�n la funcionalidad, pues cada operaci�n equivalente a lo que otras operaciones llaman copiar o pegar, genera un nuevo bloque de memoria intermedia que no sustituye al anterior, sino que se a�ade a �l.
Pero veamos bien como funciona eso, y hag�moslo con la terminolog�a propia de Emacs.

5.4.1  Borrar y eliminar texto

En Emacs se distingue entre lo que he traducido como borrar texto (<<erase>>) y eliminar texto (<<kill>>)11. En el primer caso el texto desaparece del buffer y no se puede recuperar (salvo volvi�ndolo a escribir). Por el contrario cuando eliminamos texto lo que hacemos es quitarlo del buffer, envi�ndolo a una zona independiente de memoria desde la que podremos rescatarlo (<<yank>>12) cuando queramos.
Para borrar texto (sin poderlo recuperar) se utilizan las teclas RETRO y SUPR: La primera borra el car�cter que est� a la izquierda del cursor y desplaza el cursor un car�cter a la izquierda, y la segunda borra el car�cter que est� debajo del cursor y desplaza el texto hacia la izquierda, de modo que, bajo el cursor queda el car�cter que antes estaba a su derecha. O dicho de modo m�s gr�fico: RETRO borra hacia detr�s y SUPR hacia delante.
El borrado, por lo tanto, se hace siempre car�cter a car�cter. No hay ning�n mandato para "borrar" de golpe m�s de un car�cter.
Ahora bien: el grupo de mandatos que provocan la eliminaci�n de texto es mucho m�s numeroso. Los m�s importantes son los siguientes:
Teclado Mandato Acci�n
Elimina el texto hasta el final de la l�nea
Elimina una palabra hacia atr�s
Elimina la pr�xima palabra
Elimina el texto seleccionado
Elimina hasta la pr�xima ocurrencia del car�cter que se teclee inmediatamente detr�s del mandato
A�ade el texto seleccionado a la memoria intermedia, como si se hubiera eliminado, pero sin eliminarlo
Hay que aclarar que para eliminar palabras hacia atr�s en mi distribuci�n de Emacs funciona tanto como (cuando Emacs se ejecuta en modo gr�fico).
Como dije al principio, en Emacs las distintas eliminaciones se guardan en bloques de memoria diferentes de modo que eliminar un texto no impide que podamos luego recuperar el texto de alguna eliminaci�n anterior.
�C�mo organiza Emacs los distintos bloques de memoria que contienen texto eliminado? Para ello, cuando se produce un mandato de eliminaci�n (o de copiar sin eliminar, que para estos efectos es igual), Emacs comprueba si el mandato inmediatamente anterior fue tambi�n de eliminaci�n. En caso afirmativo, guarda el texto que se acaba de eliminar en el mismo bloque de memoria en donde guard� el texto anteriormente eliminado. En caso negativo, abre un nuevo bloque de memoria para guardar el nuevo texto.
Es decir: si, por ejemplo, eliminamos sucesivamente tres parabras contiguas, las tres se almacenar�n en el mismo bloque de memoria y ser�n recuperadas conjuntamente, siempre y cuando los tres mandatos de eliminaci�n sean consecutivos, es decir: entre ellos no se haya ejecutado ning�n otro mandato, incluidos los mandatos de movimiento del cursor.
En el caso de que hayamos eliminado un texto y, m�s tarde, queramos a�adir otro texto al mismo bloque, pero tras la �ltima eliminaci�n hayamos ejecutado alg�n mandato intermedio, podemos indicarle a Emacs que reactive el bloque correspondiente a la �ltima eliminaci�n pulsando () inmediatamente antes de la siguiente eliminaci�n. El efecto de este mandato ser� que el nuevo texto eliminado se a�adir� al �ltimo bloque como si entre la anterior eliminaci�n y la nueva no hubiera habido otros mandatos.

5.4.2  Recuperar texto previamente eliminado

Para recuperar el texto que ha sido eliminado o salvado, la orden fundamental es (). Mediante ella insertaremos, en el lugar donde se encuentre el cursor, el texto m�s recientemente eliminado o salvado.
Inicialmente, cuando se ejecuta este mandato, se inserta el texto correspondiente a la �ltima eliminaci�n, pero -como ya se se�al�- una eliminaci�n no hace desaparecer a las dem�s, por lo tanto, si lo que queremos es insertar el texto correspondiente a alguna eliminaci�n anterior, debemos, tras haber recuperado el texto de la �ltima eliminaci�n, ir pulsando sucesivamente () para irnos moviendo por lo que Emacs llama el c�rculo de textos eliminados. Cada pulsaci�n de sustituir� el texto insertado por el de la eliminaci�n anterior.
Por otra parte no funciona si el mandato inmediatamente anterior a �l no ha sido un mandato de recuperaci�n de texto (incluido el propio )
Los anteriores mandatos son los m�s corrientes, pero la verdad es que la riqueza de Emacs en punto a almacenar texto para luego recuperarlo, supera con creces lo que se ha visto. El lector curioso puede consultar, en la ayuda de Emacs, los temas correspondientes a rect�ngulos (rectangles) y registros (registers). En particular los registros de texto resultan extremadamente �tiles.

6  Operaciones de b�squeda y reemplazo

6.1  B�squeda en general

6.1.1  B�squeda incremental

Esta es otra de las operaciones corrientes durante la edici�n. Se trata de buscar dentro del buffer un determinado texto para desplazarnos a �l (b�squeda), o de sustituir en el buffer de forma autom�tica todas las apariciones de una cadena de texto por otra cadena distinta.
En Emacs la b�squeda es, en principio, incremental, y toma como punto de partida la posici�n del cursor.
El que la b�squeda sea incremental significa que el cursor se va desplazando en la direcci�n indicada conforme vamos tecleando el texto a buscar. Para realizar esta operaci�n los pasos a dar son los siguientes:
  1. En primer lugar hay que ejecutar el mandato () o () seg�n queramos realizar una b�squeda hacia delante o hacia detr�s.
  2. El cursor saltar� al minibuffer, donde podremos ir tecleando poco a poco la cadena buscada. En la zona de edici�n, conforme vayamos tecleando, se ir� mostrando la pr�xima ocurrencia del texto buscado. Para cambiar la direcci�n de la b�squeda podemos teclear el mandato correspondiente a la direcci�n deseada.
  3. Cuando se ha encontrado un texto, podemos a�adir otro car�cter para afinar la b�squeda, o volver a pulsar o para localizar la pr�xima aparici�n (hacia delante o hacia detr�s) del mismo texto localizado.
  4. Si durante la b�squeda se localiza una palabra que es exactamente la que est�bamos buscando pero aun no hab�amos terminado de teclear, hace que esa palabra entera se incorpore a la cadena de b�squeda. De manera similar incorpora a la cadena de b�squeda toda la l�nea de la ventana de edici�n a partir del lugar donde se encuentra el texto localizado.
La b�squeda incremental cesa cuando se pulsa ESC, RET o se ejecuta cualquier mandato que no tenga alg�n significado especial en la b�squeda, incluido cualquier movimiento del cursor.
Durante la b�squeda podemos ademas usar la tecla RETRO para borrar el �ltimo car�cter introducido y en su lugar escribir cualquier otro; eso no afectar� a la b�squeda, pero si har� que en la zona de edici�n se deje de mostrar el texto que se hab�a localizado y se vuelva al lugar en donde se encontraba el texto que se localiz� cuando la cadena de b�squeda no ten�a todav�a el car�cter que se acaba de borrar.

6.1.2  Repetir b�squedas anteriores

Despu�s de haber realizado alguna b�squeda, pulsando la repetiremos. El primer C-s indica que se inicie una nueva b�squeda, y el segundo indica que se debe rescatar la �ltima b�squeda.
Y es que Emacs va almacenando las cadenas objeto de b�squeda en zonas de memoria independientes que constituyen lo que se llama el c�rculo de b�squedas. Estas b�squedas almacenadas pueden ser rescatadas si, en una nueva b�squeda, pulsamos o para irnos moviendo entre las sucesivas b�squedas almacenadas.

6.1.3  B�squeda no incremental y b�squeda por palabras

Si queremos que nuestra b�squeda no sea incremental, basta con, inmediatamente despu�s de haber arrancado una b�squeda incremental, y antes de haber introducido el primer car�cter de b�squeda, pulsar RET. Ello provoca que el cursor salte al minibuffer donde podremos escribir el texto a buscar y luego pulsar RET otra vez para iniciar la b�squeda.
Si queremos que la b�squeda localice palabras completas, tras pulsar o hay que pulsar, antes de introducir el texto de b�squeda, . Ello provocar� que la b�squeda se haga sobre palabras, sin tener en cuenta c�mo se separen. Es decir: si buscamos por ejemplo, la cadena "tarar� que te v� mariv�", la b�squeda por palabras localizar� esa cadena aunque el n�mero de espacios en blanco var�e, o aunque entre dos de esas palabras haya un salto de l�nea, o incluso si hay signos de puntuaci�n entre las palabras.
Esta forma de b�squeda es en Emacs m�s �til que en otros editores debido a su modo menor auto-fill (que introduce autom�ticamente saltos de l�nea al final de cada l�nea de texto) y a su sistema de "sangrado inteligenge" que provoca el que en ciertos casos se a�adan autom�ticamente espacios en blanco adicionales. Es decir: en Emacs no siempre podemos estar seguros de que la separaci�n entre dos palabras consista exactamente en un espacio en blanco. Pero este inconveniente se suprime mediante la funci�n de b�squeda por palabras.

6.2  Reemplazar texto

6.2.1  Reemplazo normal de texto

Una operaci�n de reemplazo significa que a partir de la posici�n del cursor se sustituir�n todas las ocurrencias de un texto por otro texto distinto,
El mandato para lograr esto es . Este mandato no est� asociado por defecto a ninguna secuencia de teclas, por lo tanto para ejecutarlo hay que pulsar M-x y escribirlo en el minibuffer. Tras ello se nos preguntar� la cadena de b�squeda, y tras introducirla y pulsar RET se nos preguntar� por la cadena de reemplazo. Respecto de la introducci�n de la cadena de b�squeda y de reemplazo t�ngase en cuenta lo que a prop�sito de la b�squeda incremental se dijo para localizar ciertos caracteres especiales (tabuladores y marcas de fin de l�nea).
Por otra parte este mandato tiene la especialidad de que si en el momento de ejecutarse hay una zona seleccionada (o sea: una regi�n visible), su efecto se limitar� a dicha zona. En el resto de los casos el mandato provocar� la sustituci�n desde el cursor hasta el final del buffer.
Con un argumento num�rico provocaremos que la b�squeda se limite a palabras completas (con las matizaciones hechas en el ep�grafe anterior sobre la b�squeda por palabras).
En cuanto a la sensibilidad entre may�sculas y min�sculas, depende del texto a buscar: si todo �l es en min�sculas, en principio la operaci�n se har� sin distinguir entre may�sculas y min�sculas. Y del mismo modo: si la cadena de reemplazo est� toda en min�sculas, Emacs alterar� la cadena de reemplazo para ajustarla al patr�n may�sculas-min�sculas del texto localizado.
Con un ejemplo se entendr� mejor: Si pedimos que se reemplace el texto "hola" por el texto "adios", Emacs, en primer lugar, considerar� que la b�squeda es insensible y por lo tanto reemplazar� con "adi�s" tanto las ocurrencias de "hola" como las de "Hola" o las de "HOLA". Ahora bien, donde originalmente hab�a "hola" pondr� "adi�s", donde hab�a "Hola" pondr� "Adi�s" y donde hab�a "HOLA" pondr� "ADI�S".

6.2.2  Reemplazo selectivo

Si no queremos sustituir todas las ocurrencias de cierto texto, sino s�lo algunas, podemos usar el mandato (), el cual va localizando las ocurrencias del texto buscado y pregunta al usuario, para cada ocurrencia, si desea efectuar el reemplazo.
Cada vez que se nos consulte si queremos efectuar el reemplazo, podemos pulsar alguna de las teclas que a continuaci�n se exponen:
SPC
Reemplaza la ocurrencia actual y busca la pr�xima.
RETRO
No reemplaza la ocurrencia actual, y busca la pr�xima.
,
(Coma) Reemplaza la ocurrencia actual, muestra el resultado, y vuelve a preguntar (por si queremos mantenerlo o anularlo)
RET
No realiza el reemplazo y termina la operaci�n.
.
(Punto). Reemplaza la ocurrencia actual y termina la operaci�n.
!
Deja de preguntar y realiza todos los reemplazos.
^
Vuelve a la ocurrencia anterior y vuelve a preguntarnos por ella (deshace la �ltima operaci�n).
C-r
Nos permite una edici�n recursiva, es decir: podemos modificar el texto y luego volver a esta operaci�n pulsando cuando queramos volver.
e
Permite editar la cadena de reemplazo para modificarla de aqu� en adelante.

6.3  Cuestiones adicionales relativas a las operaciones de b�squeda

6.3.1  Caracteres especiales (como insertarlos)

En la cadena de b�squeda podemos incluir cualquier car�cter; sin embargo algunos caracteres hay que introducirlos de forma especial, ya que si son pulsados en el minibuffer se interpretar�n de otra manera. Por ejemplo, para buscar saltos de l�nea, no podemos teclear RET, ya que Emacs interpretar�a que ese car�cter quiere indicar que hemos terminado la b�squeda.
En particular:
En los dos casos anteriores se utiliza el mandato (), el cual imprime el car�cter no gr�fico que se pulse a continuaci�n

6.3.2  Distinguir (o no) entre may�sculas y min�sculas

La sensibilidad o no a la distinci�n entre may�sculas y min�sculas, funciona de modo distinto en la b�squeda incremental y en el resto de operaciones de b�squeda.
Sensibilidad a las may�sculas en la b�squeda incrementa:l   Por defecto la b�squeda no distingue entre min�sculas y may�sculas siempre y cuando, como cadena de b�squeda usemos solamente letras min�sculas. En cuanto introduzcamos una letra may�scula, la b�squeda ser� sensible a la distinci�n entre ambos tipos de letras.
Es decir: una b�squeda que empez� como insensible a la distinci�n, puede convertirse, en cualquier momento, en sensible. Para ello hay que teclear un car�cter de b�squeda en may�sculas. Y cuando digo teclear quiero decir exactamente eso: el car�cter en may�sculas debe ser expresamente introducido; pero si, por ejemplo, en una operaci�n de b�squeda, se localiza una palabra que decidimos incorporar a la cadena de b�squeda pulsando , y dicha palabra ten�a alguna letra may�scula, eso no provocar� que la b�squeda que no era sensible a la distinci�n entre ambos tipos de letras pase a serlo, sino que la palabra (o la l�nea si se us� ) se incorporar� a la cadena de b�squeda, en min�sculas (en el caso de que todav�a no se hubiera tecleado ninguna tecla may�scula).
Tambi�n podemos indicar de forma manual si queremos que la b�squeda sea sensible o insensible a la distinci�n entre may�sculas y min�sculas. Para ello basta con, durante la b�squeda, pulsar Esta secuencia cambia la sensibilidad de la b�squeda: Si era insensible la hace sensible y viceversa13. T�ngase en cuenta, no obstante, que el efecto de no va m�s all� de la operaci�n de b�squeda actual.
Fijar la sensibilidad a las may�sculas de modo general para un buffer concreto:  
Los procedimientos anteriores s�lo sirven en la b�squeda incremental y, en parte, en la b�squeda que se hace para una operaci�n de reemplazo (cuando en la cadena a buscar haya letras en may�sculas), pero no funciona en la b�squeda por palabras, ni en la b�squeda por expresiones regulares (v�ase m�s adelante), as� como en la b�squeda para una operaci�n de reemplazo en la que queramos sustituir s�lo las apariciones en min�sculas del texto a cambiar.
En estos otros casos la regla es la de que la b�squeda no ser� sensible a la distinci�n entre may�sculas o min�sculas, a no ser que se le haya asignado el valor "nil" a la variable , que por defecto vale "t".
Esta variable es una variable de "buffer", es decir: una modificaci�n de su valor se entiende realizada exclusivamente para el buffer activo. Por lo tanto, es una gran candidata a convertirse en variable de fichero (v�ase el ap�ndice sobre la personalizaci�n de Emacs), para aquellos ficheros en los que queramos que la b�squeda distinga entre may�sculas y min�sculas siempre.
OJO: Si cambiamos el valor de esta variable mediante un "buffer de personalizaci�n" y le indicamos a Emacs que guarde los cambios para siempre, lo que provocaremos es que un cambio en el valor "por defecto" para todos los documentos. Eso produce un efecto distinto del que obtendr�amos cambiando el valor de la variable para el documento actual. Por ello en el men� de Emacs se ofrece la posibilidad de alterar el valor de la variable "para el documento actual" (en "Options" y luego en "Case-insensitive search").

6.4  Otras �rdenes de b�squeda y reemplazo

Adem�s de los mandatos examinados Emacs dispone de mandatos para buscar o reemplazar expresiones regulares.
Los mandatos que se refieren a expresiones regulares son los siguientes:
() Realiza una b�squeda incremental hacia adelante de una expresi�n regular.
() Realiza una b�squeda hacia atr�s de una expresi�n regular de modo incremental.
Realiza una operaci�n de reemplazo empleado como patr�n de b�squeda una expresi�n regular.
Realiza una operaci�n de reemplazo selectivo con una expresi�n regular como patr�n de b�squeda.
A todo esto �qu� son las expresiones regulares? Responder a esta pregunta es f�cil. Lo dif�cil es saber c�mo se usan. Para ello necesitamos toda la pr�xima secci�n y no estoy seguro de que sea suficiente

7  Expresiones regulares

7.1  Concepto

Un concepto simple de <<expresi�n regular>> dir�a que �stas consisten en una especie de patr�n de b�squeda. Con ellas no se trata tanto de localizar un texto exacto (aunque eso puede hacerse), como de localizar un texto que se ajuste a determinadas pautas o patrones. Un buen ejemplo ser�an los llamados caracteres comod�n de MS-DOS (o de las distintas shells de unix). Todos sabemos que, por ejemplo, la orden (o ) devuelve una lista que contiene el nombre de los documentos del directorio activo cuya extensi�n sea "doc". Es decir: es un patr�n de b�squeda que devuelve todos los nombres que acaben en ".doc".
Pero las expresiones regulares son mucho m�s que eso y de una potencia infinitamente mayor. De hecho mediante ellas podemos realizar b�squedas extremadamente precisas, como, por ejemplo: en un documento LATEX-, buscar una frase que contenga la palabra "hola", comprobar si dicha frase est� en un entorno de tipo "enumerate" y, en caso afirmativo, cambiar el entorno por otro de tipo "itemize". Otro ejemplo de m�s inter�s: Asegurarse mediante una sola operaci�n de que todos los p�rrafos de nuestro documento terminan con un punto y aparte salvo los que terminen con el car�cter de los dos puntos o un cierre de interrogaci�n o de exclamaci�n.
Eso y m�s puede hacerse mediante una sola operaci�n14. Si bien es cierto que la potencia tiene el precio de la complejidad. Las expresiones regulares son complejas. En ellas es f�cil cometer errores y para el profano tienen el aspecto de cadenas de texto ininteligibles.
Esa complejidad se debe a varias razones. Una es la de que en estas expresiones se combinan caracteres normales de b�squeda con otros que tienen un significado especial y que reciben distintos nombres, de los que personalmente considero que el m�s claro es el de operadores. Pero es que, adem�s, no hay que olvidar que las expresiones regulares utilizan la t�nica denominada "backtracking" o "vuelta atr�s" que es un tipo de programaci�n compleja usado, por ejemplo, en el lenguaje PROLOG.
De hecho las expresiones regulares no s�lo se usan en Emacs sino tambi�n en otras aplicaciones que incluyen editores potentes (como vi), shells de sistemas operativos, ciertas aplicaciones (grep, egrep) y algunos lenguajes de programaci�n como sed, awk o Perl, que es el lenguaje que hace un uso m�s potente y depurado de este tipo de expresiones.
El problema es que la sintaxis de las expresiones regulares var�a en todos estos casos. Y aunque en Internet se puede obtener bastante informaci�n, en la mayor parte de los casos esta se refiere a las expresiones regulares en Perl. Sobre su uso en Emacs se encuentran bastantes menos cosas.
Esta es la raz�n de que en las l�neas que siguen me haya atrevido a intentar una introducci�n al uso de estas expresiones en Emacs.

7.2  Operadores en las expresiones regulares (caracteres especiales)

Una expresi�n regular es una cadena de texto y, como tal, se compone de caracteres. Esos caracteres pueden ser normales o especiales. Los normales se interpretan tal cual; pero son los caracteres especiales los que dotan de potencia a las expresiones regulares.
En Emacs los caracteres con un significado especial en expresiones regulares son:
$ ^ . * + ? [ ] - \

Alguien pudiera pensar que si los caracteres especiales son s�lo esos, las expresiones regulares no pueden ser tan dif�ciles. Pero el reducido n�mero de caracteres especiales es enga�oso, ya que, de un lado, el significado de estos caracteres especiales cambia seg�n el contexto, y de otro, el �ltimo de los caracteres que he mencionado (la barra invertida) provoca que el car�cter inmediatamente detr�s asuma un sentido especial; y a veces la combinaci�n de la barra invertida con ciertos caracteres funciona como si fuera un solo <<car�cter especial>>.
Por ello, aunque la terminolog�a normal de Emacs en materia de expresiones regulares habla de "caracteres especiales", a m� me parece m�s clarificador hablar de "operadores"15 y decir que hay operadores que constan de un s�lo car�cter y otros que constan de m�s de un car�cter, y que ciertos operadores s�lo funcionan en determinados contextos.
Para explicar los operadores lo mejor es, en mi opini�n, agruparlos por tipo de tarea realizada:

7.2.1  Operadores b�sicos de reemplazo

Este grupo de operadores funcionan como una especie de comod�n que puede asumir distintos valores, es decir: que puede ser reemplazado por distintos caracteres. Cuando est�n presentes provocan que la expresi�n regular pueda coincidir con varias cadenas de texto diferentes.
Los operadores de reemplazo fundamentales son el punto y los corchetes:
El operador punto (.)
Es el m�s general de los operadores de reemplazo: en una expresi�n regular un punto coincidir� con cualquier car�cter excepto el de nueva l�nea. As�, por ejemplo, devolver� cualquier secuencia de tres caracteres que empiece por "a" y termine por "b" salvo aquellas en las que el car�cter central sea un salto de nueva l�nea.
Uso de los corchetes
Los corchetes permiten indicar un conjunto de caracteres alternativos, cualquiera de los cuales nos interesa. As�, por ejemplo, la expresi�n coincide con "casa", "cara" y "cama", pero no con "cana" ni con "capa".
Algunos caracteres, cuando se incluyen dentro de unos corchetes, tienen un significado especial salvo si se introducen en alg�n lugar concreto. En particular:
Aparte de esos caracteres, el resto de los caracteres, cuando est�n entre corchetes, se interpretan siempre como caracteres ordinarios. Es decir: Los caracteres que normalmente funcionan como operadores, dentro de unos corchetes pierden su significado especial y pasan a ser considerados simples caracteres.

7.2.2  Otros operadores de reemplazo

Una de las caracter�sticas de los modos mayores de Emacs es que en cada uno de ellos, a cada car�cter se le asigna cierta categor�a la cual, adem�s de tener un nombre, tiene un "s�mbolo" que se usa para representarla. As�, por ejemplo, las letras suelen asignarse a la categor�a "caracteres que forman parte de palabras", la cual se representa con la letra "w".
Todas estas asignaciones se hacen en lo que se suele llamar una "tabla de sintaxis". Cada modo mayor tiene su propia tabla de sintaxis, y podemos leerla para comprobar a qu� categor�a se asigna cada car�cter, ejecutando el comando (). Este comando nos muestra tres columnas. En la columna izquierda se contienen los caracteres concretos; en la derecha se contiene el nombre de la categor�a a la que dicho car�cter se asigna, y en la columna central, el s�mbolo representativo de dicha categor�a.
Pues bien: podemos usar los operadores y para buscar caracteres que pertenezcan (o no pertenezcan, si usamos el segundo operador) a cierta categor�a, teniendo en cuenta que en la sintaxis anterior "C" representa el s�mbolo identificativo de la categor�a.
As�, por ejemplo, si el s�mbolo representativo de la categor�a "puntuaci�n" es un punto, la expresi�n localizar� cualquier signo de puntuaci�n (o lo que es lo mismo: cualquier car�cter asignado a tal categor�a en la tabla de sintaxis correspondiente al modo mayor activo), mientras que localizar� cualquier car�cter que no est� asignado a tal categor�a.
De todas estas "categor�as" hay una en la que es tan normal buscar, que existe un operador espec�fico para ella. Se trata de los caracteres "constitutivos de palabras", es decir: que pueden formar parte de una palabra. Para buscar estos caracteres el operador es y para buscar caracteres que no sean constitutivos de palabras se usa el operador .
Es decir: el operador equivale al operador , mientras que equivale a .
De otro lado, de la misma manera que a cada car�cter se le asigna una categor�a "sint�ctica", tambi�n cada car�cter pertenece a una segunda categor�a relacionada con la p�gina de c�digos y conjunto de caracteres a donde pertenece. Para ver estas asignaciones (que funcionan de modo similar a lo que se ha dicho de las tablas sint�cticas) se usa el comando .
Pues bien, hay dos operadores que permite buscar caracteres asignados (o no asignados) a alguna de estas otras categor�as. Se trata de y , donde, una vez m�s, la "C" final representa el s�mbolo identificativo de una de las categor�as. As�, por ejemplo, la expresi�n , localizar� cualquier car�cter asignado al grupo de caracteres denominado "caracteres griegos".

7.2.3  Operadores de repetici�n

Este grupo de operadores indica que el car�cter o la expresi�n que se encuentra a su izquierda debe o puede repetirse cierto n�mero de veces. As�:
En condiciones normales los operadores de repetici�n se aplican a la letra inmediatamente anterior a ellos. Pero si esta es a su vez otro operador (o un grupo encerrado entre corchetes), la repetici�n se aplicar� al resultado de ese otro operador, lo que hace que cuando se combinan dos operadores de repetici�n seguidos, se obtengan resultados cuya predicci�n exige un gran esfuerzo mental; en particular si el segundo car�cter de repetici�n es "?".
Esto �ltimo es debido a que los operadores "*", "+" y "?" tienen lo que se podr�amos llamar "naturaleza �vida " o "car�cter voraz", es decir intentan extenderse lo m�s posible a la derecha; pero al a�adirles el operador "?" pierden dicho car�cter "�vido" y buscar�n la menor coincidencia posible.
Por ejemplo: si tenemos el texto "�goooooooool!" y buscamos en �l con la expresi�n regular se nos devolver� como resultado de la b�squeda "gooooooooo", lo que quiere decir que el operador "+" ha buscado el mayor n�mero de repeticiones posibles. Pero si usamos la expresi�n regular el operador final hace que el anterior pierda su car�cter �vido y pase a conformarse con la menor coincidencia posible, es decir: se conformar� con "go" y ser� ese texto el que se pase al siguiente operador "?" que busca ninguna o una repetici�n del car�cter a su izquierda, la "o", y como est� repetida, se devolver� como resultado "goo".

7.2.4  Operadores que indican posici�n del texto buscado

Este grupo de operadores nos permiten indicar en qu� lugar debe encontrarse el texto que buscamos. En ciertos contextos a estos operadores se les denomina <<anclas>> (anchors).
Al respecto disponemos de las siguientes posibilidades:
Car�cter Busca s�lo en Se coloca
^ Principio de l�nea Precediendo a la expresi�n
$ Final de l�nea Al final de la expresi�n
-` Principio del buffer Precediendo a la expresi�n
-' Final del buffer Al final de la expresi�n
-b Principio de palabra Precediendo a la expresi�n
-< Principio de palabra Precediendo a la expresi�n
-b Final de palabra Al final de la expresi�n
-> Final de palabra Al final de la expresi�n
-B No principio de palabra Precediendo a la expresi�n
-B No final de palabra Al final de la expresi�n
En la tabla anterior, cuando he escrito "precediendo a la expresi�n" o "Al final de la expresi�n", lo que pretendo decir, en el primer caso, es que el operador que sea debe estar al principio de la expresi�n regular y en el segundo caso lo contrario. As�, por ejemplo, localizar� todas las apariciones del texto "adios" que se encuentren en final de l�nea.
Se observar�, por otra parte, que en lo relativo a las palabras hay dos juegos de instrucciones: y o . La diferencia entre unas y otras se encuentra en c�mo act�an cuando la aparici�n se produce al principio o al final del buffer. y s�lo consideran que hay coincidencias al principio o al final del buffer si el car�cter que sigue o que precede a la cadena buscada entra dentro de los que coincidir�an con el operador de reemplazo (v�ase la secci�n 7.2.2).

7.3  Incluir, como car�cter de b�squeda, el identificativo de un operador

Ya hemos visto que los caracteres especiales son en realidad operadores y se interpretan como tales. Ahora bien: como adem�s de operadores se trata de caracteres, en alguna ocasi�n nos puede interesar buscar una cadena de texto que contenga alguno de ellos. Para lograrlo podemos usar dos procedimientos alternativos:
Un ejemplo del primer procedimiento lo hemos tenido cuando explicaba el uso de los corchetes. All� dije que un gui�n se interpreta como operador de rango, salvo si es el primer o el �ltimo car�cter de los corchetes, ya que en tal caso es evidente que ah� el gui�n no indica ning�n rango. De la misma manera, si usamos los operadores de repetici�n (*+?) como primer car�cter de la cadena de b�squeda, al no haber ninguna letra a su izquierda, es evidente que no pueden estar siendo usados como operadores de repetici�n.
En cuanto al segundo procedimiento, es el m�s corriente: El operador barra invertida se aplica al car�cter que se encuentre a su derecha, y provoca que ese car�cter se interprete de forma literal (OJO, esto se refiere al operador barra invertida en s� mismo considerado, no a los operadores que constan de m�s de un car�cter, el primero de los cuales es una barra invertida).
As�, por ejemplo, la cadena provocar� que se busque la secuencia <<$\>>.
Por otra parte, como poner una barra invertida a un car�cter normal no lo convierte en especial (salvo los casos ya vistos de operadores que constan de m�s de un car�cter), lo mejor, en caso de duda, es hacer uso de la barra invertida, salvo cuando estemos dentro de unos corchetes, en donde, como ya sabemos, los caracteres especiales se convierten en normales, por lo que la propia barra invertida, deja de ser especial.

7.4  Combinar expresiones regulares

Podemos combinar dos o m�s expresiones regulares creando una expresi�n nueva la cual puede buscar, bien cadenas de texto que coincidan simult�neamente con las dos expresiones constituyentes, bien cadenas de texto que coincidan con cualquiera de las expresiones constituyentes.
Para la primera posibilidad no hay sintaxis especial, basta con escribir una expresi�n regular detr�s de la otra. As�, por ejemplo, si tenemos la expresi�n regular y la combinamos con , generamos una expresi�n regular nueva que es .
Esto parece trivial y lo es.
Ahora bien: para combinar dos o m�s expresiones regulares de tal manera que la expresi�n resultante sea cierta cuando coincida con cualquiera de las previas, aunque no coincida con todas ellas, debemos usar el operador .
Este operador podr�amos traducirlo por "operador OR l�gico", y significa que debe coincidir bien la expresi�n a su izquierda, bien la expresi�n a su derecha. Si esas expresiones no son simples, debemos usar los caracteres de agrupamiento. Y as�, por ejemplo: encontrar� "foox" o "barx".

7.5  Operadores de agrupaci�n

La pareja de operadores y funcionan como operadores de agrupaci�n, es decir: todo lo que haya entre ellos se interpreta como un grupo.
En las expresiones regulares de Emacs los grupos se emplean para tres finalidades:
  1. Hacer que varios caracteres sean tratados como uno solo a efectos de aplicarles alg�n operador de repetici�n. As�, por ejemplo localizar� "Bana", "Banana", "Bananana", etc.
  2. Encerrar dentro de ellos varias expresiones alternativas separadas por el operador .
  3. Definir la secuencia encerrada dentro del grupo y asignarle una denominaci�n mediante la que nos podamos referir a ella m�s tarde.
Los dos primeros casos son bastante claros y no requieren mayor explicaci�n. Me ocupo ahora del tercero. En �l el t�rmino "agrupar" se usa en un sentido distinto a los anteriores, ya que lo que pretendemos es almacenar en una especie de registro el resultado del grupo, para poderlo usar m�s tarde. Los registros se llaman 1, 2, 3, ...9. En una expresi�n regular no se pueden usar m�s de nueve grupos con esta finalidad.
Es decir: cuando Emacs encuentra un grupo cuya finalidad no es ninguna de las dos primeras finalidades de los grupos, lo numera y asigna a dicho n�mero el resultado que ese grupo arroje, de modo que m�s adelante, en la misma expresi�n regular (o en otra expresi�n relacionada con ella), podemos incluir ese mismo resultado mediante el operador , donde "N" representa un n�mero de grupo, contado de izquierda a derecha, para el caso de que en la misma expresi�n regular haya m�s de un grupo.
Es decir: se interpreta como "insertar aqu� el mismo texto que devolvi� el grupo n�mero N". Esto no es lo mismo que volver a escribir el grupo propiamente dicho, porque no se trata de utilizar por segunda vez la misma expresi�n regular, sino el resultado que dicha expresi�n ha arrojado.
As�, por ejemplo, las siguientes dos expresiones regulares:
\(am.r\) +\1
\(am.r\) +\(am.r\)

no son equivalentes. La primera exige que la frase acabe exactamente igual que empieza, y la segunda no. Si en nuestro texto tenemos la cadena "amor amar", la segunda expresi�n regular la localizar�, y la primera no, pues aunque tanto "amor" como "amar" coinciden con la expresi�n regular , en el primer caso se exige que se coincidencia al final de la frase sea la misma que la del principio.
El inconveniente de lo anterior es que como los grupos se pueden usar para varias finalidades, s�lo se considerar� que se usa para esta finalidad un grupo cuando sea obvio que no se usa para cualquiera de las otras dos. Es decir: un grupo que vaya seguido de un operador de repetici�n, o que contenga el operador no podr� emplearse de esta manera.
En estos casos podemos empezar el contenido del grupo con los caracteres "?:" que indican que queremos que ese grupo se use para hacer despu�s referencia a su resultado.
Un uso muy corriente de este tipo de agrupamiento se da en las operaciones de reemplazo basadas en expresiones regulares, que son materia del pr�ximo ep�grafe.

7.6  Operaciones de reemplazo basadas en expresiones regulares

Una operaci�n de reemplazo en realidad se traduce en dos operaciones distintas: una primera consistente en la b�squeda de cierto texto, y otra consistente en la sustituci�n del texto una vez localizado por una segunda cadena de texto. Es evidente que para la primera parte podemos usar una expresi�n regular. Pero cabe preguntarse si la segunda cadena de texto debe necesariamente ser constante.
Es obvio que en la cadena de sustituci�n no puede usarse una expresi�n regular en el mismo sentido en el que hasta ahora nos venimos refiriendo a ellas, porque la expresi�n regular ofrece muchos resultados posibles, y en el momento de sustituir texto hay que saber qu� texto escribir, es decir: necesitamos un texto constante y no un patr�n de texto.
Pero lo que s� podemos hacer es usar en nuestro texto de sustituci�n algunas partes variables cuyo resultado dependa del resultado que haya ofrecido la expresi�n regular con la que se localiz� el texto a cambiar.
En concreto podemos usar:
As�, por ejemplo, la expresi�n
M-x replace-regexp <RET> coches*  <RET> guarda-\& <RET>

reemplazar� "coche" y "coches" por "guarda-coche" y "guarda-coches" respectivamente, mientras que
M-x replace-regexp <RET> coche\(s*\)  <RET> veh�culo\1 <RET>

cambiar� todas las apariciones de "coche"y "coches" por "veh�culo" y "veh�culos" respectivamente.
Pero el uso de esa posibilidad no significa que la cadena de reemplazo sea una expresi�n regular. No lo es y, por ello, podemos utilizar en ella cualquiera de los operadores de una expresi�n regular con la seguridad de que ser� interpretado como un car�cter, salvo el operador barra invertida, que s� deber� ser precedido de otra barra invertida para ser utilizado como car�cter.

8  GNU Free Documentation License (Licencia GNU para Documentaci�n Libre)

Version 1.2, November 2002
Copyright © 2000,2001,2002 Free Software Foundation, Inc.


59 Temple Place, Suite 330, Boston, MA 02111-1307 USA


Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as ÿou". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
The Ïnvariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called Öpaque".
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
A section Ëntitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as Äcknowledgements", "Dedications", Ëndorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section Ëntitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
You may add a section Entitled Ëndorsements", provided it contains nothing but endorsements of your Modified Version by various parties-for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled Äcknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled Ëndorsements".
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an äggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled Äcknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License ör any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:


Copyright © YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".


If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:


with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.


If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

Footnotes:

1 Copyright (c) 2004 Joaqu�n Ataz L�pez.
Permission is granted to copy, distribute and/or modify this documen under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
(Se otorga permiso para copiar, distribuir o modificar este documento en los t�rminos de la Licencia GNU para Documentaci�n Libre, versi�n 1.2 o cualquier versi�n posterior publicada por la Free Software Foundation; sin secciones invariantes, sin textos de la cubierta frontal y sin textos de la cubierta posterior. Una copia completa de la licencia (en ingl�s) se incluye en la secci�n titulada "GNU Free Documentation License").
2Aunque los detractores de Emacs -que tambi�n los hay- suelen hacer numerosos juegos de palabras en los que el nombre de Emacs asume otros significados tales como, por ejemplo, Emacs Makes All Computers Slower (= Emacs convierte a cualquier ordenador en m�s lento), o Emacs Manuals Are Criptic and Subreal (= Los manuales de Emacs son cr�pticos y subrealistas).
La oposici�n a Emacs se debe al hecho de que esta aplicaci�n en cierto modo es contraria a la filosof�a dominante en el mundo Unix que se basa en aplicaciones peque�as y compactas que hagan una sola cosa pero lo hagan bien. Y Emacs es una contradicci�n a dicha proclama, porque no es un simple editor de textos, sino mucho m�s: una aplicaci�n que hace muchas cosas (y si las hace bien o mal es opinable)
3Aunque casi nunca se piensa en ello de esa manera. Pero que se trata de un mandato es claro, y se comprueba, por ejemplo, con el hecho de que a la pulsaci�n de una tecla podemos aplicarle un prefijo num�rico del mismo modo que a cualquier otro mandato (v�ase la secci�n 2.4, p�gina pageref) y as�, por ejemplo, la secuencia de teclado escribir� cinco veces la letra "g", o lo que es lo mismo: ejecutar� cinco veces el mandato consistente en escribir la letra "g"
4En este grupo habr�a tambi�n que incluir a los mandatos para insertar letras, d�gitos y s�mbolos, lo que ocurre es que, como antes se�al�, aunque insertar una letra en el buffer sea en sentido estricto un mandato, casi nunca se piensa en ello de esa manera.
5Esto es porque el modo gr�fico implica muchos programas cada uno en su propia ventana gr�fica y en �l la funci�n de cambiar de aplicaci�n se asocia a la combinaci�n de teclas Alt-TAB. Pero como esa asociaci�n la hace el sistema operativo, es prioritaria respecto a las asociaciones hechas por Emacs, de modo que cuando el sistema operativo detecta esa pulsaci�n, cree que se le quiere dar una orden a �l, por lo tanto la ejecuta sin comunicarle nada a Emacs, que no llega a enterarse de que se ha producido tal pulsaci�n.
6Esta consideraci�n matiza lo que antes dije respecto de que las combinaciones de teclas en Emacs son siempre de dos o tres teclas, Control, Meta y una tercera tecla; porque la obtenci�n de esa tercera tecla puede implicar, a su vez, la pulsaci�n de dos teclas. De modo que hay combinaciones de teclado que, en un teclado espa�ol, pueden requerir la habilidad de un pianista por exigir hasta cuatro teclas distintas pulsadas simult�neamente. Por ejemplo: Control + Alt-izquierda, + Alt-derecha + "@" (pues en un teclado espa�ol nose puede generar el car�cter "@" sin pulsar tambi�n Alt-derecha). En estos casos puede ser una buena idea usar, como tecla Meta, la tecla ESC en lugar de Alt, ya que as� sustituir�amos la pulsaci�n simult�nea de cuatro teclas, por dos pulsaciones sucesivas: la primera de una tecla (ESC) y la segunda de tres teclas (que es m�s f�cil).
7Cuando una de esas teclas es la tecla Meta, ya sabemos que puede usarse ESC antes de la otra tecla. Si la combinaci�n de teclas incluye el uso simult�neo de Meta, Control y una tercera tecla, podemos pulsar primero ESC y luego simult�neamente, Control y la tercera tecla que fuera
8Sobre todo si se sabe ingl�s, porque en la mayor�a de los casos se elige, como secuencia de teclado, la tecla correspondiente a la inicial del nombre del mandato a ejecutar; nombre este que casi siempre est� en ingl�s
9Para documentos escritos en espa�ol el sistema de codificaci�n resulta fundamental, porque es el que determina c�mo se ver�n los caracteres no anglosajones (vocales acentuadas, letra e�e, apertura de interrogantes y admiraciones, etc). Adem�s, un sistema de codificaci�n incorrecto puede provocar errores al compilar los documentos LATEX-. Como aqu� no puedo extenderme demasiado simplemente dir� sobre este punto que para evitar problemas lo mejor es activar para cada documento el mismo sistema de codificaci�n que hayamos indicado como opci�n para el paquete "inputenc". As�, por ejemplo, si usamos <<latin1>>, el sistema de codificaci�n debe ser latin-1-unix y si usamos <<utf8>> el sistema de codificaci�n debe ser <<utf-8-unix>>.
En Emacs se asume que el sistema de codificaci�n depender� del "idioma por defecto"; pero para ficheros ya almacenados en disco, se intenta detectar el sistema de codificaci�n, usando para ello varias "opciones de usuario" cuya explicaci�n excede este documento.
Podemos, no obstante, variar el sistema de codificaci�n para un fichero concreto. Eso lo podemos hacer ejecutando el mandato (), o estableciendo la variable de fichero (v�ase al respecto el ap�ndice sobre la personalizaci�n de Emacs).
Esto �ltimo puede ser �til si en alguna ocasi�n tenemos inter�s en mantener cierta opci�n para el paquete inputenc y esa opci�n no es acorde con nuestro sistema general de codificaci�n. Bastar�a entonces con escribir, al final del fichero, entre las sentencias "Local Variables:" y "End:" una l�nea con el texto: donde xxx representa el sistema de codificaci�n deseado.
10Cosa con la que yo no estoy de acuerdo. Primero porque aunque , por ejemplo, est� m�s cerca de los dedos que la flecha abajo, tambi�n hay que tener en cuenta otras circunstancias que afectan a la velocidad. Una de ellas es la de si estamos en modo gr�fico (que siempre implica mayor lentitud, con la mano desplaz�ndose del teclado al rat�n), pero la principal es la de la automatizaci�n: La velocidad depende de lo automatizadas que tengamos las tareas, y es muy dif�cil que una tarea se automatice si, de un lado, las dem�s aplicaciones no utilizan la misma secuencia de teclado (salvo que s�lo usemos esa aplicaci�n) y, por otro lado, la secuencia utilizada no nos dice nada, como ocurre, en general, con las secuencias de Emacs a quienes no tengan por lengua materna el ingl�s. Esa fracci�n de segundo que tarda uno en recordar que est� ejecutando Emacs y no otra aplicaci�n, y que para ir a la pr�xima l�nea, en Emacs hay que pulsar Control Next (), es suficiente para que no pueda afirmarse que llevando la mano derecha a la tecla de flecha hacia abajo hayamos tardado m�s. Sin contar, adem�s, con que, normalmente, cuando movemos el cursor no estamos escribiendo nada, por lo que el que la tecla que mueve el cursor est� m�s o menos lejos del resto de las teclas para escribir no es tan importante y que, por �ltimo, un comando de movimiento del cursor exige pulsar DOS teclas lo que tambi�n contribuye a que se tarde una fracci�n de segundo m�s. Pero en todo caso la cuesti�n es -como suele pasar- muy opinable y poco importante.
11Literalmente "erase" significa borrar o eliminar, y "kill" matar o asesinar. En mi traducci�n, que no es literal, he asignado a cada una de ambas acciones el t�rmino que se usa en el "tutorial espa�ol de Emacs", incluido en sus distribuciones.
12Resulta muy dif�cil realizar una traducci�n exacta del t�rmino utilizado por Emacs: yank significa tirar de algo hacia nosotros, jalar o arrastrar una cosa. Yo lo he traducido por recuperar o rescatar, que transmite la idea pero que no es tan descriptivo. El tutorial de Emacs en espa�ol habla de "reinsertar".
13En realidad la secuencia lo que hace es ejecutar el comando , que provoca que la pr�xima palabra se convierta en may�sculas. Lo que ocurre es que la ejecuci�n de ese comando durante una operaci�n de b�squeda incremental, afecta a la sensibilidad de la b�squeda respecto de la distinci�n entre may�sculas y min�sculas.
14De hecho cuando veamos la creaci�n de documentos LATEX- con Emacs veremos que las expresiones regulares se usan para cosas tan diferentes como para determinar donde acaba el pre�mbulo de un documento, qu� tipo de informaci�n hay que almacenar de �l, qu� l�neas, de un fichero LATEX- cabe considerar constitutivas de "t�tulos", qu� tipo de caracteres no deben admitirse en una etiqueta, etc. Incluso el mismo Emacs utiliza internamente este tipo de expresiones para saber c�mo dividir el documento en p�rrafos, frases o palabras
15Prefiero el t�rmino "operadores" al t�rmino "metacaracteres" que tambi�n en ocasiones se utiliza.
16T�ngase en todo caso en cuenta que la sensibilidad de la expresi�n regular a la distinci�n entre may�sculas o min�sculas, depende de lo que se dijo en la secci�n 6.3.2.


File translated from TEX by TTH, version 3.66.
On 13 Feb 2005, 19:47.