Vous êtes sur la page 1sur 19

Introducci on a Emacs

Carlos Linares L opez Octubre, 2006

Resumen Este cap tulo describe el funcionamiento b asico del editor de textos Emacs. Actualmente se distribuye la versi on 21.4, que ya es estable. Todos los comandos que se describen en las secciones que siguen, funcionar an en esta versi on y se espera que en las futuras, puesto que GNU se esfuerza constantemente en mantener dentro de l mites razonables, la compatibilidad con las versiones anteriores.

1.
1.1.

Introducci on
Qu e es?

GNU Emacs es un editor avanzado, auto documentado, personalizable y ampliable. Con GNU Emacs, es posible editar varios cheros simult aneamente, abrir varias ventanas del mismo documento, denir macros de teclado, deshacer cambios y mucho m as. Adem as, tabula autom aticamente programas en lenguajes como C, Lisp, Pascal, y otros muchos. Tambi en ofrece facilidades para leer y escribir correo electr onico y crea copias de seguridad. El n ucleo de Emacs est a escrito en C e incluye un int erprete de Lisp. Adem as, como la mayor a de los comandos de edici on est an escritos en Lisp, es posible crear nuevos comandos en medio de una sesi on de trabajo para ser utilizados inmediatamente.

1.2.

Para qu e sirve?

A diferencia de cualquier editor de textos en cualquier sistema operativo, Emacs sirve para mucho m as que editar cheros. Emacs intentar a deducir el tipo de chero a partir de su extensi on o de una indicaci on expl cita que se coloca en la primera l nea. Si la deducci on no fue correcta, se puede indicar desde la misma l nea de comandos. Gracias a este comportamiento, Emacs puede tabular autom aticamente el c odigo fuente que se teclea cada vez que se pulsa RET (retorno) e incluso ofrecer comandos adicionales para ajustarse a las necesidades de la edici on que se est a llevando a cabo. 1

As , por ejemplo, es posible utilizar el mismo entorno para programar en C, en A HTML, escribir un art culo (con L TEX), o, de hecho, este documento. Adem as, Emacs es GNU1 y muchos voluntarios en el mundo se esfuerzan en ampliarlo. Gracias a ellos, es posible depurar programas desde Emacs, compilarlos, realizar un control de versiones, mandar correo electr onico, hacer telnet, o acceder a Internet a trav es de un browser denominado W3. Evidentemente, la funcionalidad de Emacs es tan amplia que resultar a inutil intentar explicar exhaustivamente todas sus posibilidades en pocas p aginas, por ello, se recomienda leer el manual original de Emacs, as como consultar, cada vez que se necesite, la ayuda en l nea que se ofrece desde www.gnu.org Sin embargo, estas p aginas deber an ser una descripci on suciente para el manejo de Emacs y se espera que el lector, en poco tiempo, aprenda a utilizarlo. Sin embargo, s olo se puede aprender practicando, por ello, ensaye todo lo que aqu aprenda.

1.3.

C omo funciona?

Tal y como ya se ha dicho, Emacs es un editor de textos puesto que permite cargar cheros y modicarlos despu es, para ser guardados de nuevo. Est a auto-documentado puesto que existen comandos para ofrecer informaci on a prop osito de cualquier cuesti on. Es adaptable y extensible en la medida en que es muy f acil escribir c odigo Lisp para implementar nuevas funcionalidades o modicar las que ya existen. Adem as, dispone de comandos que pueden introducirse en la misma sesi on y que sirven para especicar la asociaci on entre determinadas combinaciones de teclas y los comandos de edici on. Antes de entrar en la descripci on de Emacs se presenta, brevemente, la nomenclatura que se seguir a para la descripci on de las teclas y sus combinaciones. Emacs utiliza, pr acticamente, todas las combinaciones del teclado, desde los caracteres alfanum ericos y num ericos, hasta los c odigos especiales: Control, Meta, Retorno y Tabulador, as como la barra espaciadora que puede tener diferentes prop ositos. Para facilitar la brevedad en la exposici on, cada una de estas teclas se indica con una sola letra o con un nombre corto en vez de escribirlo entero. Dichas abreviaturas se muestran en la tabla 1. El resto de las teclas se indican con su nombre. La tecla Meta se identica, en las consolas de Sun con un rombo () y, en los teclados convencionales, como el de un PC, es la tecla Alt. Por otra parte, si se desea combinar la tecla Meta con la tecla de may usculas, tal vez sea necesario utilizar Escape (Esc) antes de pulsar may usculas. Las combinaciones de teclas se indican separando con guiones cada una de ellas. As , por ejemplo, M-> indica que se deben pulsar simult aneamente las teclas Meta y >.
1

GNU signica GNUs not Unix.

Control Meta Retorno Tabulador Espacio Suprimir

C M RET TAB SPC DEL

Cuadro 1: Abreviaturas de teclado Adem as, en ocasiones ser a necesario pulsar diferentes combinaciones para lograr un prop osito determinado. En tal caso, cada una de las combinaciones se separan de un espacio en blanco. Por ejemplo, C-u 1 8 C-x v representa la pulsaci on simult anea de las teclas Control y u primero. Luego, el 1, el 8, Control y x al mismo tiempo y nalmente v. Por u ltimo, porque con frecuencia la conguraci on de los teclados en m aquinas diferentes puede deparar grandes sorpresas, todos los comandos incluyen el nombre de la funci on Lisp que invocan. Por ello, si no es posible reproducir una secuencia concreta de teclas, puede ejecutarse el comando con M-x comando. En las siguientes secciones se presentan las maneras y modos de realizar acciones en Emacs que son comunes en muchos editores de texto. Cuanto m as avance, m as aprender a y descubrir a que se pueden hacer cosas con Emacs que resultan impensables en la gran mayor a por no decir la absoluta totalidad de los editores.

2.

La pantalla

Emacs organiza la pantalla en diferentes areas que se denominan ventanas independientemente de que est e en un entorno gr aco o de texto. La ventana m as grande es aquella en la que se realizar a la edici on de cheros. El elemento m as importante de una ventana es el punto. Adem as, deben distinguirse otras dos zonas que se denominan l nea de estado y minibuer.

2.1.

El punto

Durante una sesi on de edici on con Emacs, el cursor muestra aquella posici on del buer donde se aplicar a el siguiente comando. A dicha posici on se la denomina punto. Aunque no es posible presentar varios cursores en la pantalla, en caso de que tenga varios buers abiertos, cada chero tiene su propio punto. Cuando el cursor pasa de un buer a otro, se posiciona all donde se qued o el punto. Evidentemente, el buer en uso ser a aqu el en el que est e activo el cursor. La tabla 2 muestra los comandos para mover el cursor (o punto). 3

Direcci on

Descripci on

Comando Lisp

Teclas

Hacia delante

Hacia detr as

Avanzar un car acter Avanzar una palabra Avanzar una l nea Ir a f n de l nea Ir a f n de p arrafo Avanzar una p agina Ir a nal del documento Retroceder un car acter Retroceder una palabra Retroceder una l nea Ir a principio de l nea Ir a inicio de p arrafo Retroceder una p agina Ir a inicio del documento

forward-char forward-word next-line end-of-line forward-paragraph scroll-up end-of-buffer backward-char backward-word previous-line beginning-of-line backward-paragraph scroll-down beginning-of-buffer

C-f M-f C-n C-e M-} C-v M-> C-b M-b C-p C-a M-{ M-v M->

Cuadro 2: Comandos para mover el punto Adem as, como es l ogico, tambi en se puede avanzar o retroceder una posici on con las teclas del cursor y respectivamente. An alogamente, se puede avanzar o retroceder una l nea con y . Por u ltimo, tambi en se puede avanzar o retroceder una p agina con las teclas de avance y retroceso de p agina.

2.2.

L nea de estado

La l nea de estado es la pen ultima la del editor y, probablemente, est a resaltada en video inverso. Dicha l nea consiste en los siguientes caracteres: -- ch - Emacs: buf (mayor menor ) ---- pos -----donde: ch puede ser: ** Si se ha modicado el texto desde que se recuper o el chero. -- Si no se ha modicado el texto actual o no se ha editado ning un chero. % % Si el chero es de solo lectura. buf es el nombre del buer que est a siendo actualmente editado. Los buers se presentan en la secci on 3.6. mayor es el modo mayor utilizado actualmente. Los modos mayores se explican en la secci on 3.11. menor es una lista de los modos menores elegidos para la edici on del chero actual. 4

pos indica la posici on del cursor en el chero. Si el cursor est a al principio, ser a Top; si est a al nal, Bot; si se est a viendo el chero entero, All; y, en cualquier otro caso, el tanto por ciento del chero que est a por encima del cursor.

2.3.

Minibuer

El minibuer es la u ltima l nea de la ventana. Esta l nea est a dedicada a: Realizar un eco de los comandos tecleados. Por ejemplo, al pulsar C-x 4 C-o para visulizar un buer en otra ventana, el minibuer ir a mostrando toda la combinaci on. Introducir argumentos para la ejecuci on de los comandos que los requieran. Por ejemplo, al ejecutar M-x query-replace, para buscar y sustituir algunas cadenas del buer actual, Emacs preguntar a qu e cadena hay que buscar y por cual se reemplazar a. Seg un se teclean los argumentos, se van mostrando en el minibuer. Para ofrecer informaci on sobre el estado de ejecuci on de alg un comando. As , por ejemplo, al pulsar C-g en cualquier momento, Emacs escribir a en el minibuffer Quit indicando que, sea cual fuere la tarea que se estaba realizando, ha sido abortada.

3.

Comandos de edici on b asicos


Esta es sin ning un lugar a dudas, la secci on m as importante de este cap tulo.

La mayor parte de los comandos que se describen a continuaci on est an presentes en la tarjeta de referencia r apida. Para una mayor comprensi on de sus funciones y diferencias, se han organizado tem aticamente, tal y como se muestra a continuaci on.

3.1.

Ejecutar Emacs

En una sesi on Unix, basta con hacer: % emacs donde % es el prompt de la shell (en csh o tcsh, este es el prompt normal, pero en bash o sh, podr a ser $). Cuando Emacs se ejecuta, pueden cargarse en memoria librer as, funciones, combinaciones de teclas, . . . Esto es muy u til para: primero, personalizar el entorno; segundo, para instalar paquetes como, por ejemplo, el editor de p aginas HTML, html-helpermode. Para disponer de toda esta funcionalidad, es necesario tener algunos conocimientos de Lisp a n de poder modicar el chero de inicializaci on .emacs. Sin embargo, 5

la descripci on y utilidad de este chero va mucho m as all a de los objetivos de este documento y por ello no se presentar a su utilizaci on. Una vez que Emacs ha arrancado, la pantalla completa presenta un u nico buer denominado *scratch*. M as adelante se explicar a como trabajar con el. Por ahora, solo es necesario saber que este es el buer gen erico dedicado a trabajos que se realizan por primera vez.

3.2.

Abandonar Emacs

En cualquiera de los sistemas operativos Unix existen dos maneras diferentes de salir de Emacs:

Suspender la ejecuci on de Emacs (suspend-emacs). C-z Produce una salida al sistema operativo, pero con Emacs ejecutando en background. Salir de Emacs (save-buffers-kill-emacs). C-x C-c Si se hace, Emacs es desalojado de memoria y se retorna al sistema operativo. Si no se modicaron algunos buers, se pedir a conrmaci on para salvarlos y, si no se salvan, para salir.

3.3.

Ficheros

Emacs puede, como cualquier otro editor de textos, leer cheros, salvarlos, copiar los contenidos de uno en otro, etc. Los comandos que se reeren al tratamiento de cheros se muestran en la tabla 3.

3.4.

Recuperaci on de errores

Uno de los comandos m as socorridos de Emacs es, sin ning un lugar a dudas, C-g (keyboard-quit). Esta combinaci on aborta el comando en ejecuci on. Cuando se desea deshacer el efecto de un comando no deseado (bien porque no se tecle o correctamente la combinaci on pensada, bien porque el resultado de una funci on invocada no ha sido el esperado), C-x u o, equivalentemente, C- (advertised-undo), deshacen dichos cambios. Por u ltimo, en algunas ocasiones puede suceder que la pantalla se llene de basura o, en cualquier caso, de caracteres que emborronan las ventanas de Emacs. En tal caso C-l (recenter) redibuja la pantalla y actualiza todos sus contenidos 6

Funci on

Comando Lisp

Teclas

Leer un chero

find-file

C-x C-f

Salvar un chero

save-buffer

C-x C-s

Insertar un chero

insert-file

C-x C-i

Reemplazar el chero

find-alternate-file

C-x C-v

Escribir en otro chero

write-file

C-x C-w

Descripci on Lee el chero que se indique como argumento y lo carga en el buer activo. Graba el chero cargado en el buer activo. Si el buer tiene nombre, se graba con ese mismo nombre, en otro caso por ejemplo, si se trata del buer *scratch*, Emacs pedir a un nombre de chero. Lee el chero que se indique como argumento en el minibuer y lo inserta en la posici on actual del punto. Reemplaza el chero editado en el buer actual, con aqu el que se entregue como par ametro a trav es del minibuer. Escribe los contenidos del buer actual en un chero distinto del que est a asignado al buffer. El nombre del chero donde se realiza la escritura se indica a trav es del minibuer.

Cuadro 3: Comandos para el tratamiento de cheros

3.5.

Marcar

Emacs mantiene en memoria un anillo de marcas, esto es, una lista de posiciones que apuntan a diferentes lugares de un mismo buer. De esta manera, es posible ir de un lugar a otro muy r apidamente o, por ejemplo, marcar determinadas posiciones que, con alg un inter es espec co, se desean recordar. Para poder acceder a este tipo de facilidades desconocidas en la gran mayor a de los editores, es necesario, en primer lugar, aprender a marcar. Una marca se establece all donde se pulsa C-SPC o, tambi en C-@ (set-mark-command). Como ya se indic o, el punto es la posici on ocoupada por el cursor. Por lo tanto, se denomina regi on al area que hay entre la marca y el punto (en cualquier orden). El concepto de regi on es, como se ver a, vital en Emacs. Con C-x C-x (exchange-point-and-mark), la u ltima marca grabada y el punto intercambian sus posiciones. Este comando es muy u til cuando, por ejemplo, se desea estudiar otra parte del chero, distinta de la que se est a editando, antes de seguir. Para hacerlo, se marca el punto actual; a continuaci on se accede a esa otra posici on de inter es y, para volver, basta con hacer C-x C-x: Emacs recuerda donde se hab a quedado la u ltima marca y lleva el punto hasta all , esto es, el cursor. Para utilizar el anillo de marcas con todas sus posibilidades, se dispone de C-u C-SPC o, equivalentemente, C-u C-@. Dicho comando va recorriendo todo el anillo posicionando el cursor en cada una de las marcas almacenadas.

3.6.

Buers

Hasta ahora, buer era un t ermino que se asociaba, sin p erdida de generalidad, tanto a chero como a ventana. Esto es as en la medida en que cada chero que se edita requiere una ventana nueva y cada ventana puede entenderse como un buer. Sin embargo, si se abre varias veces el mismo chero, esta asociaci on puede resultar confusa. As mismo, esta equivalencia resulta enga nosa si se modican varios cheros sin dividir la pantalla. Las diferencias entre los t erminos, aunque sutiles, son signicativas: Ventana. Se trata de aquella posici on de la pantalla que se dedica a la edici on de un chero. Por ejemplo, gracias al comando C-x 2, la pantalla (esto es, todo el espacio dedicado a Emacs) se divide en dos ventanas. Ventana es un concepto, del todo, f sico. Fichero. Puede entenderse que un chero es aquella parte de informaci on guardada en un dispositivo de almacenamiento, como un disco duro. En Emacs, chero tiene el mismo signicado que para el sistema operativo. Buer. Se dice que el texto que est a siendo editado reside en un objeto denominado buer. Se trata de un concepto l ogico. 8

Para que se comprendan mejor los t erminos presentados, sup ongase que se desean editar varios cheros que se encuentran en el mismo directorio. Por ejemplo: gnu.texi, makele, gnu.ps y gnu.info. Si para ello se sigue la secuencia de comandos (sin las comas, por supuesto): C-x C-f gnu.texi, C-x C-f makefile, C-x 2, C-x C-f gnu.ps, C-x 2, C-x C-f gnu.info y, supuesto que no se ha hecho ninguna otra modicaci on, se tiene que: Cuando se C-x 2 por primera vez, se tienen dos ventanas, cada una de las cuales ocupa la mitad de la pantalla. Adem as, ya se han cargado dos cheros: gnu.texi y makele. Sin embargo, hay tres buers: gnu.texi, makele y *scratch*. A continuaci on se carga el chero gnu.ps. Al hacerlo, se tienen tres cheros los dos anteriores y el nuevo y cuatro buers. Finalmente, se vuelve a dividir una de las ventanas y se carga el chero gnu.info. Con lo que se tiene un chero m as, as como un nuevo buer y una nueva ventana. En total, cuatro cheros, cinco buers y tres ventanas. Para conocer el nombre de cada uno de los buers que se est an editando simult aneamente, se dispone del comando C-x C-b (list-buffers). Este comando abre otra ventana, con un nuevo buer, donde presenta los nombres de todos los buers en l neas separadas, as como las caracter sticas de cada uno de los cheros que se est an editando, por ejemplo: MR Buffer -- -----. emacs.tex gnu.tex portada.tex *scratch* * *Messages* % *Completions* Size ---46076 4150 2028 0 2236 455 Mode File ------LaTeX ~/latex/gnu/emacs.tex LaTeX ~/latex/gnu/gnu.tex LaTeX ~/latex/gnu/portada.tex Lisp Interaction Fundamental Completion List

El orden y signicado de cada uno de los campos que se muestran es el siguiente: MR puede valer: * Buer modicado. % Buer de solo lectura. . Buer actual. Buer Nombre del buer. Si se editan cheros, el nombre del buer y el del chero coincidir an. Si se est an realizando otras tareas, como por ejemplo, pedir ayuda o acceder al sistema de informaci on, el buer tendr a un nombre espec co (en el ejemplo, *scratch*, *Messages* y *Completions*). 9

Direcci on

Descripci on

Comando Lisp

Teclas

Hacia delante

Hacia detr as

Car acter Hasta el n Hasta el n Hasta el n Car acter Hasta el n Hasta el n Hasta el n

de palabra de l nea de p arrafo de palabra de l nea de p arrafo

delete-char kill-word kill-line kill-sentence delete-backward-char backward-kill-word kill-line backward-kill-sentence

C-d M-d C-k ESC k DEL M-DEL M-0 C-k C-k DEL

Cuadro 4: Comandos para cortar texto Size Tama no del buer. Mode Modo mayor de edici on. Cons ultese la secci on 3.11. File Si lo hubiera, chero asociado con el buer indicado en la misma l nea.

Para poder ir de un buer a otro, se utiliza C-x b (switch-to-buffer). El comando es efectivo introduciendo en el minibuer el nombre del buer que se desea visitar. Para hacer las cosas m as c omodas, Emacs recuerda el u ltimo buer visitado antes que este y presenta, por defecto, ese nombre en par entesis. Para acpetar la opci on por defecto basta con pulsar RET.

3.7.

Copiar y cortar

Las funciones de copiar y cortar son indispensables en cualquier editor. En Emacs, estas funciones son, con mucha diferencia, mucho m as ricas.

3.7.1.

Cortar

Los comandos para cortar pedazos de texto se muestran en la tabla 4. Adem as de los que se presentan ah , una regi on entera se corta con C-w (completion-killregion), es decir, borra la zona comprendida entre el punto y la u ltima marca. Hay adem as, otras modalidades: de expresiones, sentencias completas, etc. Sin embargo, su explicaci on va m as all a de la intenci on de este peque no manual. Emacs mantiene en memoria una zona denominada anillo de borrado donde se almacenan hasta un n umero prejado de elementos (t picamente 16). Por ello, si se hace C-w y se repite el comando m as tarde, ambas componentes borradas se almacenan en memoria y no ocurre, como en la mayor a de los editores, donde el segundo elemento reemplazar a al primero. 10

3.7.2.

Copiar y pegar

La funci on pegar consiste en insertar en un punto concreto de cualquier buer un texto que fue previamente borrado. Por lo tanto, primero ser a necesario ejecutar alguno de los comandos presentados en la secci on anterior, para poder acceder a estos. Para pegar se utiliza la combinaci on C-y (yank), con la que se recupera la u ltima componente borrada (palabra, l nea, p arrafo, . . . ) y se pega en la posici on indicada por el punto. Esto es, se recupera la primera posici on del anillo de borrado y se inserta. La funci on de copiar se distingue de la de pegar en que no es necesario eliminar una parte de texto antes. En su lugar, M-w (kill-ring-save), simula el borrado de texto escribiendo la regi on seleccionada en el anillo de borrado, pero sin eliminarlo del buer. La primera posici on del anillo de borrado se accede con C-y tal y como ya se ha indicado. Las siguientes, con M-y (yank-pop) justo a continuaci on de un C-y. La utilidad del anillo de borrado es de gran utilidad para las tareas de copiar y pegar vol umenes de cualquier tama no2 en cualquier parte. Por ejemplo, si el buer contiene: Grupo de Planificaci on y Aprendizaje Departamento de Inform atica Universidad Carlos III de Madrid Espa~ na y se graba, primero, la segunda l nea en el anillo de borrado (poniendo el cursor en la l nea 2, C-a, C-SPC, C-e y M-w) y, despu es, la u ltima l nea, el anillo de borrado contendr a: Espa~ na Departamento de Inform atica Para insertar Departamento de Inform atica es suciente hacer, primero, C-y con lo que en el buer se tiene (supuesto que el cursor est a ahora en la u ltima l nea): Grupo de Planificaci on y Aprendizaje Departamento de Inform atica Universidad Carlos III de Madrid Espa~ na Espa~ na
2 De cualquier tama no! De hecho, que el tama no no sea una restricci on severa en la realizaci on de tareas inform aticas, es uno de los principios fundamentales de dise no de software GNU.

11

Elemento

Comando Lisp

Teclas

point-to-register Punto point-to-register copy-to-register Regi on insert-register

C-x / r C-x j r C-x x r C-x g r

Descripci on Almacenar el punto en el registro r. Ir a la posici on almacenada en el registro r. Salvar la regi on en el registro r. Insertar la regi on almacenada en el registro r.

Cuadro 5: Comandos para el tratamiento de registros y, sin mover el punto, M-y, con lo que se reemplaza la u ltima l nea por el siguiente contenido del anillo de borrado:

Grupo de Planificaci on y Aprendizaje Departamento de Inform atica Universidad Carlos III de Madrid Espa~ na Departamento de Inform atica

3.8.

Registros

Los registros son otra de las facilidades de Emacs. Adem as del anillo de borrado y del anillo de marcas, se dispone de otras zonas de memoria, denominadas registros donde se puede almacenar pr acticamente cualquier cosa, desde el punto o una sola letra hasta documentos completos pasando por p arrafos, rect angulos (secciones de texto que no tienen por qu e empezar en la primera columna y que comprenden un n umero cualquiera de las), etc. Desde el punto de vista pr actico, un registro sirve para almacenar y recuperar el punto, una regi on o un rect angulo. El u ltimo elemento no ser a tratado por exceder los objetivos de este peque no manual. Los comandos disponibles para el tratamiento de registros se muestran en la tabla 5. El valor del registro r es un ndice a toda la estructura de registros. Cuando se escribe un valor en un registro o se lee de el, es necesario indicar su valor. Dicho valor es, simplemente, un car acter. As , por ejemplo, el registro l puede contener un punto, el registro 3 un bloque de informaci on, etc. Para especicar el valor de r se utiliza el minibuer. 12

Direcci on

Comando Lisp

Teclas

Hacia delante Hacia detr as

isearch-forward isearch-backward

C-s C-r

Cuadro 6: Comandos de b usqueda

3.9.

B usqueda y reemplazamiento

Aunque las posibilidades de la b usqueda y el reemplazamiento especialmente la primera, son en Emacs excepcionales, aqu s olo se expondr an los comandos t picos en cualquier editor de textos. Sin embargo, antes de continuar, conviene destacar el hecho de que Emacs puede buscar en un solo buer o en varios de ellos incluso si no han sido cargados y son solamente cheros en el disco duro, incluso expresiones regulares. Puesto que el reemplazamiento se suele asociar a una b usqueda que se realiza en primer lugar para despu es practicar la sustituci on, se introducir a, primero, la b usqueda sin reemplazamiento y despu es se ver a como practicar la sustituci on. Un forma de b usqueda muy u til, especialmente cuando se desarrollan grandes proyectos de Software son los denominados Tags. M as adelante se describir a su funcionamiento. 3.9.1. B usqueda sin reemplazamiento

La b usqueda puede realizarse bidireccionalmente, esto es, hacia delante o hacia detr as, tal y como se muestra en la tabla 6. Cuando se pulsa cualquiera de los comandos de b usqueda indicados, el minibuer presenta el mensaje Isearch:, invitando a introducir la cadena que se desea buscar. Seg un se pulsan teclas hasta completar la cadena deseada, puede observarse como el punto se desplaza desde la posici on actual hacia delante/detr as en busca de los caracteres que hasta el momento hayan sido introducidos por el minibuer. Si al introducir un nuevo car acter, la cadena introducida ya no existiera, Emacs emitir a un sonido de alerta advirti endolo. Una vez que se ha encontrado una ocurrencia de la b usqueda seleccionada, es necesario pulsar RET para salir del modo de b usqueda. Antes de nalizar, se inserta, autom aticamente, una marca en la posici on actual del punto (cursor). Por supuesto, el car acter DEL sigue teniendo sentido durante este proceso. Su efecto consiste en borrar el u ltimo car acter introducido en el minibuer. Al hacerlo, tal vez el punto se mueva en direcci on opuesta a la del proceso de b usqueda hasta la ocurrencia anterior. Si durante la b usqueda se pulsa C-g, el proceso se interrumpe y el punto vuelve a donde estaba originalmente. 13

3.9.2.

B usqueda con reemplazamiento

La b usqueda con reemplazamiento se realiza con M- % (query-replace). Una vez que se entra en el modo de reemplazamiento, primero es necesario indicar en el minibuer, la cadena que se desea reemplazar, y luego, la nueva cadena. Por cada una de las ocurrencias de la cadena que se desea sustituir, el punto se sit ua sobre ella y el minibuer presenta el mensaje: Query replacing cadena original with cadena nal : (? for help). Entonces, se dispone de los siguientes comandos: SPC (o y). Reemplaza la cadena apuntada por el cursor por la nueva cadena y mueve el cursor hasta la siguiente ocurrencia pidiendo, de nuevo, conrmaci on. RET (o q). Abandona el modo de b usqueda con reemplazamiento. , (coma). Reemplaza la cadena apuntada por el cursor pero no mueve el punto. C-r Entra en el modo de edici on del que se sale con C-M-c. El modo de edici on ofrece la iliusi on de que no se est a en el modo de b usqueda con reemplazamiento y se se puede acceder a los comandos de edici on de Emacs. Cuando se sale de el, se vuelve de nuevo al modo de b usqueda. C-w Borra la ocurrencia marcada por el punto y entra en el modo de edici on. Se sale del modo de edici on con C-M-c. ! Sustituye el resto de las ocurrencias sin pedir conrmaci on. Mueve el punto a la ocurrencia anterior.

3.10.

Ayuda

En la presentaci on de Emacs se indic o que estaba auto-documentado. Pues bien, el sistema de ayuda es tan ecaz que, de hecho, contiene el manual completo de Emacs y much simo m as. No s olo eso, sino que adem as su manejo est a tan bien documentado que basta con hacer C-h y seguir las instrucciones que saldr an en el minibuer para acceder a toda la funcionalidad del sistema de ayuda. Entre otras cosas, merece la pena destacar C-h t (help-with-tutorial), que ofrece un tutorial del manejo de Emacs para usuarios reci en llegados. Las opciones m as signicativas son las siguientes: C-h a (command-apropos). Modo de b usqueda de las funciones de edici on implementadas. Una vez que se ha introducido este comando, puede indicarse en el minibuer una expresi on regular para la b usqueda de funciones de edici on. Por ejemplo, si se teclea 14

C-h a string, Emacs presenta en pantalla aquellas funciones que incluyen, en su nombre, la palabra string y una peque na descripci on de su comportamiento, as como la combinaci on de teclas (si la hubiera) que invoca dicha funci on. C-h c (describe-key-briefly). Muestra la funci on que ejecuta una determinada combinaci on de teclas. C-h f (describe-function). Describe la funci on que se indica a trav es del minibuer. C-h m (describe-mode). Informa sobre los comandos propios del modo mayor de edici on actual (cons ultese la secci on 3.11). C-h l (view-lossage). Presenta las u ltimas 100 pulsaciones de tecla. Si las teclas pulsadas no son c odigos de control, las representa por su car acter. En otro caso, utiliza los caracteres indicados en la tabla 1. Las combinaciones simult aneas de teclas se muestran con un gui on. Este comando es de much sima utilidad cuando, en una sesi on de trabajo normal, de pronto ha ocurrido algo inesperado. Pulsando C-h l puede saberse la combinaci on o sucesi on de teclas que produjo dicha acci on y, adem as, aprender a algo nuevo en Emacs. Por u ltimo, la cantidad de posibilidades que existen en el sistema de ayuda son muchas. Para verlas, debe utilizarse C-h C-h (help-for-help).

3.11.

Modos mayores

Emacs dispone de diferentes modos mayores, cada uno de los cuales caracteriza el comportamiento del buer. El modo por defecto es Fundamental. De hecho, *scratch* est a en modo Fundamental mientras no se indique lo contrario. La mayor a de los comandos que se presentan en este manual se comportan igual en cualquier modo mayor. Sin embargo, las teclas TAB y DEL alterar an f acilmente su funcionalidad. Por ejemplo, si en el modo mayor de Lisp se pulsa TAB, el punto avanza una cantidad proporcional de espacios a la anidaci on de la funci on que actualmente se est a escribiendo y que se corresponde con la diferencia de par entesis abiertos menos aquellos que est an cerrados. Pero en C, aunque TAB es b asicamente lo mismo, avanzar a un n umero de espacios diferentes en el caso de estar dentro de un comando switch, por ejemplo, que si est a en un for. Otras diferencias, son relativas al uso de colores. Por ejemplo, el buer actual no se colorear a de la misma manera (M-x font-lock-mode activa/desactiva el color) en el modo mayor de Lisp que en el de Java, o cualquier otro. Emacs asume que el modo mayor puede deducirse de la extensi on del chero que se est a editando. As , por ejemplo, si un chero tiene extensi on .f, ser a tratado en el modo mayor de Fortran; si el chero tiene extensi on .texi, en el modo mayor Texinfo, con extensi on .perl se emplear a el modo mayor de Perl, etc. 15

Sin embargo, se puede forzar la selecci on del modo mayor de una de estas dos maneras: una, mediante alguno de los comandos M-x modo-mayor, por ejemplo, M-x lispmode fuerza el modo Lisp, M-x pascal-mode, el modo mayor Pascal, etc.; segundo, mediante una indicaci on expl cita en cualquier posici on de la primera l nea del chero que se carga. Esta indicaci on expl cita consiste en colocar el modo mayor entre -*-. As , por ejemplo, si un chero contiene en su primera l nea:

/* -*- C -*- */ ser a tratado en el modo de C3 . N otese que el modo mayor se ha colocado dentro de un comentario de C, o de lo contrario, al compilar este chero habr a un error. Por u ltimo, para conocer los comandos nuevos o aquellos que han modicado su comportamiento en el modo mayor actual, se puede utilizar C-h m (describe-mode).

3.12.

Tags

Los tags son otra de las caracter sticas m as sobresalientes de Emacs. Mientras que pr acticamente todos los editores disponen de comandos de b usqueda que, dicho sea de paso, son normalmente mucho menos capaces, Emacs ofrece la posibilidad de buscar a trav es de varios cheros una cadena en concreto. Mientras que en Emacs es posible trabajar con la llamada barra r apida (speedbar ) haciendo M-x speedbar para gestionar manualmente el acceso a varios cheros, una tabla de tags consiste en un chero que contiene punteros a las posiciones de una colecci on de cheros donde est an las cadenas de texto m as sobresalientes. Por ejemplo, en C, las declaraciones de funciones y procedimientos, deniciones de tipos, constantes, etc. En Lisp, la declaraci on de funciones, par ametros o variables especiales, macros, etc. Para poder hacerlo, es necesario disponer del comando etags que se distribuye siempre con Emacs. El formato es: etags [opciones] tabla tags chero y las opciones m as relevantes son: -o nombre fichero. Indica el nombre del chero en el que se escribir a la tabla de tags. -a. A nade a la tabla de tags seleccionada, los que se deduzcan de otro chero de c odigo.
3 Otra forma de conseguir lo mismo es empleando las denominadas variables locales (locals ) que, sin embargo, no se explicar an en este documento.

16

Por otra parte, chero es aqu el que se desea examinar para obtener sus tags m as relevantes y que ser an inclu dos en tabla tags. Sup ongase, por ejemplo, que se est a desarrollando un proyecto con once c odigos fuente diferentes en C: types.h, defs.h, cursor.h, cursor.c, port.h, port.c, screen.h, screen.c, console.h, console.c y application.c. La siguiente sucesi on de comandos crear a una tabla llamada application.tags que ser a utilizada como se ver a m as tarde.

etags etags etags etags etags etags etags etags etags etags etags

-o -a -a -a -a -a -a -a -a -a -a

application.tags types.h -o application.tags defs.h -o application.tags cursor.h -o application.tags cursor.c -o application.tags port.h -o application.tags port.c -o application.tags screen.h -o application.tags screen.c -o application.tags console.h -o application.tags console.c -o application.tags application.c

Una vez que el chero application.tags ya ha sido creado4 puede ejecutar el comando M-x visit-tags-table, desde Emacs. Dicho comando sirve para solicitar a Emacs que lea una tabla de tags en concreto, cuyo nombre deber a teclearse por el minibuer (en este caso, application.tags). Si ya se ha cargado la tabla de tags, ni siquiera es necesario cargar los once cheros de fuente para buscar, por ejemplo, una funci on llamada print-page que se encuentra en port.h y en port.c. Para ello, basta con pulsar M-. (find-tag) y, a continuaci on, introducir print-page por el minibuer. Emacs cargar a, autom aticamente, el chero port.h primero, y llevar a el punto a la primera ocurrencia de print-page (probablemente all donde se deni o el prototipo de la funci on). Obviamente, este proceso es mucho m as r apido, incluso que emplear la barra r apida (recurso habitualmente presente en tantos editores) puesto que entonces es necesario saber d onde buscar, mientras que gracias a los tags, no lo es en absoluto. Ahora bien, si se desean realizar b usquedas de un tag para sustitu rlo, se debe utilizar M-x tags-query-replace y proceder de forma an aloga a la sustituci on normal. En cualquier caso, tanto si se realizan sustituciones como si no, es posible avanzar a la siguiente ocurrencia con M-,. Por u ltimo, es posible realizar b usquedas de expresiones regulares mediante C-x t, sin embargo, las expresiones regulares van m as all a de las intenciones de este manual y su estudio se deja al lector interesado.
4 De hecho, si piensa utilizar Emacs para desarrollar un proyecto que involucra varios cheros, es altamente recomendable que automatice estas operaciones con GNU Make.

17

3.13.

Macros

Las macros de teclado o simplemente macros, son una facilidad que sirve para asignar a un nombre una sucesi on de comandos, de tal modo que, invoc andola, se ejecutan autom aticamente todos los pasos. Para denir una macro, se utiliza C-x ( (start-kbd-macro). A continuaci on, se introducen los comandos de la macro y, por u ltimo, se cierra con C-x ) (end-kbdmacro). Durante el tiempo que dura la grabaci on, el modo menor presentar a Def. Por ejemplo, imag nese que deseamos crear una macro que sirva para dividir la ventana actual en dos partes, llevar el punto a la ventana reci en creada, y all cambiar 5 al buer *scratch* . Los siguientes comandos denen la macro (se incluyen tambi en los comandos para la apertura y cierre de la grabaci on de la macro):

C-x C-x C-x C-x C-x

( 2 o b )

Obs ervese que si se decide utilizar una macro, ser a porque ser a usada con frecuencia. En tal caso, basta con a nadir C-x ( y C-x ) a la primera ejecuci on. Desde entonces, las siguientes invocaciones y ejecuciones ser an mucho m as r apidas. Una vez que ha sido grabada, para ejecutar una macro basta con hacer C-x e (calllast-kbd-macro), que ejecuta la u ltima macro denida. Ahora bien, al programar varias macros ser a indispensable dar un nombre a cada una, a n de diferenciarlas y no perderlas. Para ello, debe utilizarse M-x name-last-kbd-macro. Por ejemplo, la macro reci en creada podr a bautizarse con open-clipboard. Para nalizar el ejemplo, resulta muy aconsejable programar una segunda funci on que sirve para cerrar el *scratch* y volver de nuevo al buer de trabajo. Para ello, podr a denirse una segunda macro con:

C-x ( RET -----------------------------RET C-x 0 C-x )


Esta macro es de utilidad para manejar un area reservada en la que se pueden realizar anotaciones mientras trabaja en otro buer. Adem as, *scratch* es un buer como cualquier otro, por lo que all se dispone de todos los comandos de Emacs. En otros editores, el clipboard es una zona tan especial, como poco socorrida, por lo que no se utiliza demasiado.
5

18

Las deniciones de macros son globales a toda la sesi on. En tal caso, la secuencia anterior puede introducirse mientras el *scratch* es el buer actual (que es lo m as recomendable) o no. En cualquier caso, una vez grabada, puede invocarse desde cualquier buer. Esta funci on se denominar a close-clipboard con M-x name-last-kbd-macro close-clipboard. Realice un par de pruebas. Ejecute M-x open-clipboard. Si no utiliz o el *scratch* hasta ahora, deber a estar vac o. Escriba lo que quiera y cuando haya acabado ejecute M-x close-clipboard. Seguramente su m aquina habr a ejecutado la macro tan r apidamente que ni siquiera habr a podido ver la l nea de guiones. Aseg urese y ejecute C-x b *scratch*. Ahora podr a ver como despu es de sus comentarios aparece una l nea de guiones y el punto est a al principio de una nueva l nea, lista para recibir el siguiente apunte.

19

Vous aimerez peut-être aussi