-04-( Tutorial de Emacs )----------------------------------------------------------------------------------------------------------------------------------------------RM-10] -----[ Nahual ]--------------------------------------------------------------------------------------------------------------------------------[nahual@raza-mexicana.org] TUTORIAL DE EMACS ----------------------------------------- PARa LOs QUe ESTAMOs HASTa La MADRe De VI -------------pOR nAHUAL------------------ Derechos Reservados (c) 1985 Free Software Foundation, Inc Ver condiciones, y otra informacion importante, al final de este texto Traduccion al Espa~ol del documento original Este es el Tutorial de Emacs v. 20.2.1 * INTRODUCCION --------------- Nota introductoria: Ver "Haciendo este tutorial el default" hacia el final de este texto. Los comandos en Emacs por lo general incluyen el uso de la tecla CONTROL (conocida a veces como Ctrl) o la tecla META (conocida a veces como Alt). En este texto los abreviaremos de la siguiente manera: C- significa mantener presionada la tecla CONTROL mientras oprimimos un caracter . Por ejemplo, C-f seria: mantener presionada la tecla CONTROL y oprimir la letra f. M- significa mantener presionada la tecla META mientras oprimimos un caracter . Si no hay una tecla META, se puede presionar y soltar la tecla ESC, y despues oprimir un caracter. Nos referiremos a la tecla ESC asi: Nota que al usar la tecla ESC, en lugar de una autentica tecla META (como Alt), no debemos mantenerla presionada. Esto es porque la tecla ESC es un caracter en si, no es una tecla de modificacion como CONTROL, META, o SHIFT, por ejemplo. Importante! - Los caracteres ">>" al margen izquierdo indican algo que pueden probar ustedes mismos. Por esto, para usar este tutorial al maximo es necesario abrirlo con Emacs, no solamente darle una leida con algun otro editor. -Para finalizar la sesion hay que usar C-x C-c (Dos caracteres, y no necesitan soltar la tecla Ctrl). >> Ahora, presiona C-v (Ver siguiente pantalla) para seguir con la pantalla siguiente (Manten presionada la tecla CONTROL mientras oprime la tecla v). Haz esto de ahora en adelante para ver el resto del documento. Lo primero que hay que aprender es como moverse de un lugar a otro dentro del texto. Ya sabes como desplegar la pantalla siguiente, con C-v. Para desplegar la pantalla anterior solo es cosa de usar M-v (manten presionada la tecla META y oprime v. Si no tienes tecla META, usa v, oprimiendo la tecla ESC y despues oprimiendo la tecla v). >> Trata de usar M-v y C-v varias veces, para acostumbrarte. En la mayoria de los teclados ahora posible reemplazar comandos CONTROL y META que controlan el cursor, con el uso de Page Up, Page Down, Home, End, Insert, Delete, y las flechas. Pero es recomendable usar los comandos CONTROL y META de cualquier forma, por las razones siguientes: 1) Funcionan con cualquier tipo de terminal 2) Asi uno practica el uso de Emacs. Ademas de que usando estos comandos suele ser mas rapido, porque no hay que mover las manos a otra seccion del teclado. 3) Si uno se acostumbra a usar estos comandos, sera mas facil aprender a usar otros comandos, de control de cursor, mas avanzados. * RESUMEN ---------- Los siguientes comandos son utiles para observar las paginas de un texto: C-v Ver siguiente pantalla, M-v Ver pantalla anterior ,C-l Posicionar el cursor al centro de la pantalla y redesplegar el documento alrededor del mismo. (Es CONTROL-L no CONTROL-1) >> Encuentra el cursor y fijate que texto esta cerca de el. Ahora usa C-l. Encuentra el cursor de nuevo y observa que ese mismo texto esta en el centro de la pantalla. * CONTROL BASICO DEL CURSOR ---------------------------- Es util poder moverse de pantalla en pantalla. Pero como moverse a un lugar especifico dentro del texto? Existen varias manera de hacer esto. La forma mas basica es usando C-p, C-b, C-f, y C-n. Cada uno de estos comandos mueve el cursor una fila o una columna en una direccion particular dentro de la pantalla. La tabla siguiente muestra estos comandos y la manera en que mueven el cursor. Linea Previa, C-p : : Atras, C-b .... Current cursor position .... Adelante, C-f : : Linea Siguente, C-n Las letras tienen un significado en particular, en ingles. P es Previous, N es Next, B es Backward, y F es Forward. Nota: En teclados modernos es posible, y mas facil, reemplazar C-p, C-b, C-n, y C-f con las flechas que controlan el cursor. >> Da algunos C-n para bajar a esta linea. >> Mueve el cursor dentro de la linea usando C-f y despues sube usando C-p. Observa lo que ue sucede cuando el cursor esta enmedio de la linea y haces C-p Cada linea de texto tiene un caracter que significa "Nueva-Linea". Es como cualquier otro caracter, pero en lugar de que lo veamos, como veriamos una letra, por ejemplo, lo que hace es separar cada linea en el texto. >> Coloca el cursor al principio de una linea. Haz C-b y el cursor se colocara al final de la linea anterior, que es donde se encuentra el caracter Nueva-Linea C-f haria lo mismo, moviendose del final de una linea al principio de la linea siguiente. >> Usa C-b varias veces, y despues regresa al final de la lineacon C-f. Haz C-f una vez mas para mover el cursor al principio de la linea siguiente. Cuando te mueves mas alla de la parte de arriba o abajo de la pantalla, la pantalla va a moverse. Esto se conoce como scrolling. Asi podemos mover el cursor para arriba o para abajo sin necesidad de cambiarnos completamente de pantalla. >> Mueve el cursor mas alla de la pantalla con C-n, y observa lo que sucede. Si resulta muy lento mover el cursor caracter por caracter, puedes moverlo palabra por palabra con M-f (hacia adelante) y M-b (hacia atras). >> Presiona M-f y M-b varias veces. Cuando estas en medio de una palabra, M-f mueve el cursor al final de esa palabra, Cuando estas al final de una palabra, o en el espacio en blanco entre dos palabras, M-f se mueve al final de la palabra siguiente. M-b funciona igual, pero en direccion contraria. >> Muevete usando M-f y M-b, incluyendo algunos C-f y C-b. Observa como funcionan M-f y M-b cuando el cursor se encuentra en diferentes lugares dentro y entre palabras. Nota el paralelismo entre C-f y C-b por un lado, y M-f y M-b por otro. Generalmente los caracteres META actuan sobre unidades de lenguaje (palabras, oraciones, parrafos), mientras que los caracteres CONTROL actuan sobre unidades independientes de lo que se este editado(lineas,caracteres,etc.) Este pararelismo se ve entre lineas y oraciones: C-a y C-e se mueven entre el principio y el final de una linea, y M-a y M-e se mueven entre el principio y el final de una oracion. >> Prueba un par de C-a y despues un par de C-e Prueba un par de M-a y un par de M-e Se puede ver que el uso repetido de C-a no hace nada. Pero el uso repetido de M-a nos sigue moviendo a otras oraciones. Esto muestra que los comandos no son completamente analogos, pero no deja de ser natural este funcionamiento. El lugar donde se encuentra el cursor se conoce como "point" (punto). Por lo tanto, se puede decir que el cursor indica donde "point" se encuentra dentro del texto. Esto es un resumen de comandos usados para controlar el cursor: C-f Moverse adelante un caracter C-b Moverse atras un character M-f Moverse adelante una palabra M-b Moverse atras una palabra C-n Moverse a la linea siguiente C-p Moverse a la linea anterior C-a Moverse al principio de una linea C-e Moverse al final de una linea M-a Moverse al principio de una oracion M-e Moverse al final de una oracion >> Prueba esos comandos algunas veces, para practicar. Son los mas usados. Otros dos comandos importantes que controlan el cursor son M-<, que mueve el cursor al principio del documento, y M->, que mueve el cursor al final del documento. En la mayoria de las terminales, los simbolos ">" y "<" estan encima de la coma, por esto es necesario oprimir tambien la tecla SHIFT. Es decir, M-SHIFT-<, o de lo contrario estariamos usando "M-," (M-comma). >> Presiona M-< para ir al principio de este tutorial. Despues presiona C-v varias veces para regresar aqui. >> Presiona M-> para ir al final de este tutorial. Despues presiona M-v varias veces para regresar aqui. La mayoria de los comandos en Emacs aceptan un argumento numerico; para la mayoria de los comandos, esto sirve para repetir el comando un determinado numero de veces. Para dar este argumento al comando, hay que oprimir C-u seguido de los digitos deseados, antes de usar el comando. Si se tiene una tecla META disponible, hay una alternativa: mantener presionada la tecla META mientras escribimos el numero. Es recomendable aprender el metodo C-u, porque funciona en cualquier terminal. Por ejemplo, C-u 8 C-f movera el cursor 8 caracteres hacia adelante. >> Prueba usando C-n o C-p con un argumento mumerico, para mover el cursor a alguna linea cercana con un solo comando. La mayoria de los comandos usan el argumento numerico como contador, para repetir el comando. Pero algunos comandos lo usan de manera diferente. C-v y M-v son algunas excepciones. El argumento hace que muevan la pantalla completa ese numero lineas. C-u 4 C-v moveria la pantalla completa 4 lineas para arriba. >> Prueba C-u 8 C-v ahora. Esto debio haber causado que la pantalla se moviera 8 lineas para arriba. Para volver la pantalla a donde estaba, se le puede hacer C-u 8 M-v, por ejemplo. Si estas usando X-Window, se puede usar la barra de al lado, para examinar el texto usando el mouse. >> Usando el mouse, oprime alguna seccion dentro de la barra. Dependiendo a que altura se oprimio la barra, el texto subira o bajara a una altura determinada. >> Dejando presionado el mouse sobre el boton que esta dentro de la barra, trata de mover el texto. La pantalla subira y bajara correspondientemente. * CUANDO EMACS ESTA CONGELADO ------------------------------ Si Emacs deja de responder a los comandos, puede usarse el comando C-g para pararlo. Puede usarse C-g para detener algun comando que este tardando demasiado en ejecutarse. Tambien es posible usar C-g para descartar un argumento numerico o cancelar un comando que has decidido no ejecutar despues de todo. >> Presiona C-u 100 para usar un argumento numerico de 100. Despues C-g. Ahora presiona C-f. El cursor solo se movera un caracter, puesto que el argumento numerico fue cancelado con C-g. Si presionaste por error, puede cancelarse con un C-g. * COMANDOS DESHABILITADOS -------------------------- Ciertos comandos en Emacs estan deshabilitados para que principiantes no los usen por accidente. Si se presiona uno de estos comandos, Emacs presenta un mensaje diciendo que comando es, y dando la opcion de cancelar o ejecutar ese comando. Si en verdad se desea correr ese comando, es cuestion de presionar la barra espaciadora. En caso contrario, es cosa de oprimir la tecla "n". >> Oprime : (es un comando deshabilitado) Oprime la letra "n" para cancelar. * VENTANAS ----------- Emacs puede tener varias ventanas, cada una con su propio texto. Mas adelante explicare como usar ventanas multiples. Pero por lo pronto solo aprenderemos como deshacernos de ventanas extras, para tener una sola. Es facil: C-x 1 (Una sola ventana: matar las demas) Es decir, CONTROL-X seguido del digito 1. C-x 1 expande la ventana donde se encuentra el cursor, para ocupar la pantalla completa. Quita las demas ventanas. >> Pon el cursor en esta linea y haz C-u 0 C-l >> Haz C-h k C-f Observa como la ventana original se achica, dando lugar a otra mas, la cual contiene informacion sobre el comando CONTROL-f >> Usa C-x 1 para hacer desaparecer esa ventana * INSERTANDO Y BORRANDO ------------------------ Para insertar texto, solo escribe el texto. Caracteres que son visibles, como 5, K, $, etc. son considerados como texto por Emacs, y son insertados inmediatamente. Presiona la tecla para insertar un caracter Nueva-Linea. Se puede borrar el ultimo caracter escrito presionando la tecla , la cual es una tecla en el teclado llamada a veces "Del". En muchos casos, la tecla sirve como , pero no siempre. La tecla borra el caracter justo antes del cursor en ciertos sistemas; en otros borra el caracter justo despues. >> Escribe algunos caracteres ahora, y borralos presionando o , el que de el resultado deseado. No te preocupes por cambiar este archivo. Si este tutorial esta definido como el default, esto no alterara el archivo original. Esto es tu copia personal. Cuando una linea de texto es demasiado grande para caber en la pantalla, esta linea sera continuada en una segunda linea. Un simbolo de continuacion, el backslash (""), indica que la linea ha sido continuada. >> Inserta texto hasta llegar al margen derecho de la pantalla. Sigue agregando texto y veras el simbolo de continuacion. >> Usa o para borrar la linea hasta que quepa en una sola linea. El simbolo de continuacion desaparece. Se puede borrar el caracter Nueva-Linea como cualquier otro caracter. Si se borra el caracter Nueva-Linea que se encuentra entre dos lineas, estas dos lineas seran unidas como una sola; si la linea formada es demasiado larga para caber en la pantalla, aparecera el simbolo de continuacion. >> Mueve el cursor a donde comienza una linea. Presiona (o tal vez). Esto une esta linea con la anterior. >> Presiona para reinsertar el caracter Nueva Linea que fue borrado. Recuerda que la mayoria de los comandos en Emacs aceptan argumentos numericos. Lo mismo sucede con caracteres de texto. Asi se pueden repetir caracteres varias veces. >> Ahora presiona C-u 8 * Esto insertara el caracter "*" 8 veces. Este es un resumen de comandos de borrado y eliminacion: eliminar el caracter justo antes del cursor (en las PC es ) C-d eliminar el caracter justo despues del cursor M- eliminar la palabra justo antes del cursor M-d eliminar la palabra justo despues del cursor C-k eliminar desde la posicion del cursor hasta el final de la linea M-k eliminar desde la posicion del cursor hasta el final de la oracion indicada por el cursor Notese que (o Backspace, como ya explicamos) y C-d versus M- y M-d tienen el mismo paralelismo que C-f y M-f. C-k y M-k funcionan de manera parecida a C-e y M-e. Cuando se borra mas de un caracter a la vez, Emacs guarda ese texto en memoria para que pueda extraerse de nuevo. La extraccion de texto eliminado se conoce como "yanking". Se puede extraer el texto eliminado en el mismo lugar donde fue eliminado, o en cualquier otro lugar en el texto. Se puede extraer el texto repetidamente, para hacer copias multiples de el. El comando es C-y. La diferencia entre entre "borrar" y "eliminar" es que el texto eliminado se puede volver a extraer, y el testo borrado no. En general, comandos que quitan cantidades grandes de texto, guardan ese texto por seguridad. Comandos que quitan cantidades menores de texto, no lo guardan. >> Mueve el cursor al principio de una linea que no esta vacia Presiona C-k para eliminar el texto en esa linea. >> Presiona C-k una vez mas. Esto eliminara el caracter Nueva-Linea de esa misma linea Ver que un C-k elimina el texto en la linea, un segundo C-k elimina la linea en si, haciendo que las demas lineas suban. C-k utiliza un argumento numerico de manera especial: elimina ese numero de lineas y su contenido tambien. Es decir, C-u 2 C-k eliminaria 2 lineas consu respectivo caracter Nueva-Linea; presionando C-k dos veces no haria eso. Para extraer el texto eliminado mas recientemente, y ponerlo donde se encuentra el cursor, presionar C-y. >> Pruebalo. Presiona C-y Cuando varias lineas son eliminadas con C-k, un solo C-y extraera todas las lineas. >> Presiona C-k varias veces Ahora, para recuperar el texto: >> Presiona C-y. Ahora mueve el cursor unas cuantas lineas para abajo, y presiona C-y nuevamente. Esto demuestra que se puede copiar texto y empastarlo en otra parte. El comando C-y extrae la ultima eliminacion hecha. Pero eliminaciones previas no estan perdidas. Repitiendo el comando M-y nos presenta texto que eliminamos previamente. Repitiendo este comando suficientemente, llegaremos de nuevo al texto que eliminamos mas recientemente. Es mas facil de comprender siguiendo este ejemplo: >> Elimina una lineacon C-k. Mueve el cursor a otra linea y eliminala tambien. Presiona C-y para extraer la segunda linea que eliminamos. presiona M-y para ver la primera linea que eliminamos, y asi sucesivamente. Es posible darle argumentos positivos y negativos al comando M-y. * DESHACER ----------- Si se hace una modificacion al texto, pero al final decides que fue un error, se puede cancelar esa modificacion con el comando deshacer, C-x u. Normalmente, C-x u deshace los cambios hechos por un solo comando, el mas reciente. Si se repite C-x u varias veces seguidas, cada repeticion deshace el comando previo. Pero hay dos excepciones: los comandos que no cambian el texto no cuentan (esto incluye los movimientos de cursor y de pantalla), y los caracteres insertados en el texto se manejan en grupos de 20 (para reducir el numero de C-x u que hay que hacerse para eliminar texto insertado). >> Elimina esta linea con C-k. El comando C-x u lo volvera a poner. C-_ es otra forma del comando C-x u, pero es mas facil de escribir repetidamente. La desventaja es que no todos los teclados presentan son claros en como escribirlo. En algunos teclados puede escribirse C-- o C-/. El argumento numerico para C-_ o C-x u sirve para repetir el comando. * ARCHIVOS ----------- Para hacer permanentes los cambios que hagamos en el texto, debemos grabarlo en un archivo. Los cambios se graban en un archivo "abriendo" el archivo ( o "encontrando" o "visitando" el archivo). Abrir un archivo significa que veremos el contenido del archivo, dentro de Emacs. Al abrir el archivo, Emacs no grabara permanentemente ningun cambio hecho para evitar que se modifique el contenido del archivo si nosotros no lo queremos asi, a menos que nosotros mismos queramos guardar esos cambios. Y aun cuando grabemos los cambios hechos a un archivo, Emacs grabara el archivo original con un nombre diferente, en caso de que nos arrepintieramos de haber modificado el archivo. Si ves abajo en la pantalla veras una linea que comienza y termina con guiones, y empieza con algo asi como "--:-- TUTORIAL". Esta parte de la pantalla normalmente indica el nombre del archivo que hayamos abierto. En este momento, estas visitando el archivo "TUTORIAL" que es la copia personal del documento original. El nombre del archivo abierto siempre aparecera en este lugar. Los comandos para encontrar y guardar archivos son diferentes a los demas comandos que has aprendido, en que estan formados por dos caracteres. Ambos comienzan con el caracter Control-x. Existe una serie completa de comandos que comienzan con Control-x; muchos de ellos tienen que ver con archivos, buffers, y cosas por el estilo. Estos comandos son de dos, tres, o cuatro caracteres de longitud. Otra cosa acerca del comando para abrir un archivo es que hay que escribir el nombre del archivo que queremos. En este caso, decimos que el comando "lee un argumento de la terminal" (el argumento es el nombre del archivo). Al escribir el comando C-x C-f Emacs nos preguntara el nombre del archivo. Este nombre aparecera en la parte inferior de la pantalla. Esta parte inferior se llama minibuffer cuando es usada de esta manera. Pueden usarse comaandos de edicion ordinarios de Emacs para editar el nombre del archivo. Cuando estemos escribiendo el nombre del archivo (o cualquier otra cosa dentro del minibuffer), se puede cancelar el comando con C-g. >> Presiona C-x C-f, despues C-g. Esto cancela el minibuffer y tambien el comando C-x C-f. Cuando has escrito el nombre del archivo, presiona y el comando C-x C-f abrira el archivo. El minibufferr desaparece inmediatamente despues. El contenido del archivo aparecera en pantalla, y podremos editarlo. Para guardar nuestros cambios, utilizamos el comando C-x C-s Guarda los cambios Esto copia el texto que estemos viendo, a nuestro archivo. Al hacer esto, Emacs hace una copia de respaldo del archivo original llamada de la misma forma, pero con el caracter "~" agregado al final. Al guardarse los cambios, Emacs presenta el nombre del archivo modificado. Es conveniente guardar los cambios con frecuencia, para evitar perder demasiado en caso de que el sistema se vuelva inestable y caiga. >> Presiona C-x C-s, para guardar la copia de tu TUTORIAL Veremos las palabras "Wrote ...TUTORIAL" (TUTORIAL ...escrito) al pie de la pantalla. NOTA: En ciertos sistemas, presionando C-x C-s congelara la pantalla y no veremos ningun mensaje de Emacs. Esto indica una caracteristica del sistema operativo, llamada "control de procesos", esta interceptando C-s y no le es permitido el acceso a Emacs. para descongelar la pantalla, usa C-q. lee la seccion "Spontaneus Entry to Incremental Search" (Acceso Espontaneo a Busqueda or Incrementos) en el manual de Emacs para ver como dar tratamiento a este problema. Puedes abrir un archivo existente, para verlo o editarlo. Se puede tambien abrir un archivo inexistente. De esta manera se pueden crear archivos nuevos: Abre el archivo, el cual estara vacio, y despues introducirle texto. Al guardar el archivo, Emacs creara ese archivo junto con el texto que le hayamos introducido. De ahi en adelante, estaras editando un archivo existente. * BUFFERS ---------- Si abres un segundo archivo con C-x C-f, el otro que ya tenias abierto sigue dentro de Emacs. Se puede pasar de un archivo a otro usando el comando C-x -C-f. >> Crea un archivo llamado "compadre" con el comando C-x C-f compadre . Inserta algo de texto, y guardalo usando C-x C-s. Despues regresa a este tutorial con C-x C-f TUTORIAL . Emacs guarda el texto de cada archivo en lo que se conoce como "buffer". Al abrir un nuevo archivo, creamos un nuevo buffer. Para ver la lista de buffers que tenemos un un instante, usamos este comando: C-x C-b Lista de Buffers >> Prueba ahora C-x C-b Observa como cada buffer tiene un nombre, y puede tambien tener el nombre del archivo que contiene esos datos. Algunos buffers no corresponden a archivos. Por ejemplo, el buffer llamado *Buffer List* no esta asociado a ningun archivo. Es el buffer que contiene la lista de buffers creada cuando hacemos C-x C-b. Cualquier texto que se vea en una ventana de Emacs es parte de algun buffer. >> Presiona C-x 1 para cerrar la lista de buffers. Si se hacen cambios a algun archivo, despues se abre otro archivo, esto no guarda automaticamente el primer archivo. Los cambios estaran en su buffer, dentro de Emacs. La creacion o edicion del segundo archivo no tiene efecto alguno sobre el buffer del primer archivo. Esto es util, pero tambien significa que necesitamos una manera conveniente de guardar el contenido del buffer del primer archivo. Seria molesto tener que regresar al primer archivo con C-x C-f y despues guardarlo con C-x C-s. Asi que tenemos C-x s Guardar buffers determinados C-x s te preguntara acerca de cada buffer que contenga cambios que no han sido guardados. Te pregunta, por cada buffer, si debera guardarlo. >> Inserta una linea de texto, despues usa C-x s Emacs preguntara si debera guardar el buffer llamado TUTORIAL Responde si (yes) a la pregunta presionando "y". * EXTENDIENDO LA LISTA DE COMANDOS ----------------------------------- Hay muchos mas comandos en Emacs que podrian ser asociados a todos los caracteres Control y Meta. El comando de eXtension es usado para esto, para aumentar el numero de comandos que pueden activarse con los diversos caracteres. Este comando viene en dos formas: C-x eXtension de Caracter. Seguido de un caracter. M-x eXtension de noMbre. Seguido del nombre A continuacion estan ciertos comandos que son utiles, pero son menos usados que los que ya has aprendido. Ya vimos dos de ellos: los comandos de archivo C-x C-f para abrir un archivo, y C-x C-s para guardarlo. otro ejemplo es el comando usado para terminar la sesion Emacs, C-x C-c (No hay que preocuparse de perder los cambios hechos al archivo; Emacs preguntara si se desea guardar los cambios o no, antes de cerrarse). C-z es el comando que permite salirse de Emacs *temporalmente*--para despues volver a entrar a la misma sesion. En los sistemas que lo permitan, C-z "suspende" Emacs; esto es, retorna a la shell, sin terminar Emacs. En las shells mas comunes, el comando fg, o `%emacs' (sin comillas) nos regresara a Emacs. En sistemas que no tengan soporte para suspension, C-z creara una subshell dentro del mismo Emacs, para poder correr otros programas y despues regresar a Emacs; pero en realidad nunca sale de Emacs. En este caso, el comando `exit' cerrrrara la subshell y nos regresara a Emacs. Usar C-x C-c muchas veces es util solamente para cuando queramos salir de nuestra shell. Tambien es la forma correcta de salir de un Emacs invocado dentro de algun otro programa, puesto que dicho programa puede no saber que hacer cuando Emacs es suspendido. En circunstancias ordinarias, es util tener Emacs suspendido con C-z, en lugar de salir de el. Hay muchos comandos de tipo C-x. Esta es la lista de los que hemos aprendido: C-x C-f Abrir un archivo C-x C-s Guardar un archivo C-x C-b Lista de buffers C-x C-c Salir de Emacs C-x u Deshacer Comandos de extension de nombre son comandos que son utilizados menos todavia, o comandos que solo se usan en cierto modo. Un ejemplo es el comando replace-string, que reemplaza cierto texto con otro texto, a nivel global. Al presionar M-x, Emacs presentara la M-x en la parte inferior de la pantalla, y se debemos escribir el nombre del comando; en este caso "replace-string". Solo escribe "repl s" y Emacs completara el nombre del comando, donde es la tecla Tab. Presiona . El comando replace-string requiere dos argumentos--el texto a reemplazar, y el texto con el que se reemplazara. Despues de escribir cada argumento, presionar . >> Mueve el cursor a la linea vacia dos lineas debajo de esta. Presiona M-x repl scambiadaalterada Nota como esta linea ha sido cambiada: haz reemplazado la palabra c-a-m-b-i-a-d-a con "alterada" donde quiera que fue encontrada, a partir de la posicion inicial del cursor. * GUARDADO AUTOMATICO ---------------------- Si se hacen cambios a un archivo, pero no han sido guardados, podrian perderse si el sistema cae, por alguna razon. Para protegernos de esto, Emacs periodicamente guarda los archivos que estemos editando a archivos de "guardado automatico". Cada archivo de guardado automatico tiene un # al principio y al final de su nombre; por ejemplo, si estamos editando el archivo "hola.c", su archivo de guardado automatico es "#hola.c#". Cuando guardemos nuestro archivo de la manera normal, con C-x C-s, Emacs borrara su archivo de guardado automatico. Si el sistema cae, podras recuperar el archivo abriendo el archivo normalmente (el original, no el de guardado automatico) y despues presionando M-x recover file. Cuando Emacs pida confirmacion, escribe yes para segur adelante, y recuperar el archivo con los datos perdidos. * AREA DE COMANDOS ------------------- Si escribimos los comandos lentamente, Emacs los presentara en la parte inferior de la pantalla, el area de comandos (echo area). Esta area se encuentra en la ultima linea de la pantalla. * LINEA DE MODO --------------------- El area directamente encima de el area de comandos se conoce como linea de modo. Esta linea dice algo asi como: --**-Emacs: TUTORIAL (Fundamental)--L670--58%------------------ Esta linea proporciona informacion util acerca de el estado de Emacs y el texto que estemos editando. Antes que nada, esta el nombre del archivo. En este caso el nombre es TUTORIAL. -NN%- indica la posicion del cursor dentro del texto. Significa que NN por ciento del texto esta arriba de la pantalla. Si tuvieramos la primera pagina del texto en la pantalla, diria -Top- en lugar de -00%-. Si tuvieramos la ultima pagina del texto en nuestra pantalla, diria -Bot-. Si estas viendo un texto tan chico que cabe completamente en una pantalla, la linea de modo diria -All-. Los asteriscos al principio indican que se han hecho cambios al texto. Justo al abrir o guardar un archivo, esta parte de la linea no muestra asteriscos, solo guiones. La parte de la linea de modo que se encuentra entre parentesis dice en que modo de edicion nos encontramos. La modo default es el modo Fundamental. Es el que estamos usando ahora, y es un ejemplo de "modo principal". Emacs tiene varios modos principales. Algunas de ellas sirven para editar lenguajes diferentes y/o tipos de texto, como modo Lisp, modo Texto, etc. En cada momento, solo puede estar activo un modo principal, y su nombre estara donde "Fundamental" esta ahora. Cada modo principal hace que ciertos comandos actuen de manera diferente. Por ejemplo, hay comandos para generar comentarios dentro de un programa, y como cada lenguaje de programacion tiene una idea diferente de lo que es un comentario, cada modo principal tiene que insertar comentarios de diferente forma. Cada modo principal es el nombre de un comando de extension, asi es como podemos cambiar de modo. Por ejemplo, M-x fundamental-mode es el comando para cambiar a modo Fundamental. Para editar texto en algun lenguaje humano, como este documento, seria conveniente el modo de Texto. >> Escribe M-x text-mode No te preocupes, nungun comando que hayas aprendido cambia de manera apreciable. Pero se puede observar que M-f y M-b ahora tratan apostrofes como partes de las palabras. Antes, en modo Fundamental, M-f y M-b trataban apostrofes como separadores de palabras. Modos principales usualmente hacen cambios sutiles como ese: la mayoria de los comandos hacen "el mismo trabajo" en cada modo principal, pero trabajan ligeramente diferente. Para ver informacion acerca del modo activo en determinado momento, usa C-h m. >> Usa C-u C-v una o varias veces para subir esta linea hasta la parte superior de la pantalla >> Escribe C-h m, para ver una descripcion del modo Texto >> Usa C-x 1, para quitar la pantalla informativa Los modos principales se llaman asi porque tambien existen modos secundarios. Los modos secundarios no son alternativas a los modos principales, sino que son ligeras modificaciones a los mismos. Cada modo secundario puede ser habilitado o deshabilitado independientemente de los demas modos secundarios, e independientemente de tu modo principal. Asi que pueden no usarse los modos secundarios, usar un solo modo secundario, o usar cualquier combinacion de ellos. Un modo secundario que es muy util, en especial al editarse texto en algun idioma, es el modo Auto Fill. Cuando este modo esta activado, Emacs rompe la linea entre dos palabras automaticamente cada vez que escribamos una linea que demasiado larga. Se puede activar Auto Fill con el comando M-x auto-fill-mode. Cuando este modo este activado, se puede desactivar con el mismo comando M-x auto-fill-mode. Si esta activado, el comando lo desactiva; si esta desactivado, el comando lo activa. >> Escribe M-x auto-fill-mode ahora. Escribe algo como "asdf " repetidamente hasta que la linea se divida en dos lineas. cada palabra debe estar separada por un espacio, porque Emacs solo rompe las lineas en donde haya espacios. El margen generalmente es de 70 caracteres, pero se puede cambiar con el comando C-x f. El margen se especifica como un argumento numerico. >> Usa C-x f con un argumento de 20 (C-u 2 0 C-x f). Despues escribe algo y podra observarse como Emacs rompera las lineas mayores de 20 caracteres. Regresa el margen a 70 usando C-x f nuevamente. Si haces cambios a la mitad de un parrafo, el modo Auto Fill no funcionara. En este caso hay que usar el comando M-q, con el cursor dentro de ese parrafo. * BUSQUEDA ----------- Emacs puede buscar hileras de caracteres (es decir, palabras o grupos de palabras) dentro de un documento, hacia abajo o hacia arriba dentro del mismo. Buscar texto es un comando que controla el cursor; mueve el cursor al siguiente lugar donde aparezca ese texto. Este comando es diferente al de muchos otros editores, en que trabaja en "incrementos". Esto significa que la busqueda ocurre mientras escribimos lo que buscamos. El comando para iniciar la busqueda es C-s para una busqueda hacia adelante, o C-r para una busqueda hacia atras. PERO ESPERA! no los pruebes todavia. Cuando escribas C-s notaras que abajo, en el area de comandos, aparece "I-search". Esto indica que Emacs esta preparado para iniciar una busqueda de texto en modo de incrementos, esperando que escribas el texto a buscar. cancelara la busqueda en cualquier momento. >> Ahora, escribe C-s para comenzar una busqueda. Lentamente, una letra a la vez, escribe la palabra "cursor", una sola vez. >> Usa C-s nuevamente, para buscar esa palabra otra vez. >> Ahora presiona ( si tienes una PC) y observa el movimiento del cursor. >> Presiona para terminar la busqueda. Viste lo que paso? Emacs, en busqueda incremental, trata de buscar el texto que se haya escrito hasta el momento. Para ir a la siguiente incidencia de la palabra 'cursor', usamos C-s de nuevo. Si ya no hay incidencias de esa palabra Emacs sonara una alarma y nos avisara que la busqueda esta fallando. C-g terminara la busqueda y regresaremos a donde comenzamos. NOTA: En ciertos sistemas, escribiendo C-s congelara la pantalla y Emacs no dira mas. Esto indicaria que una caracteristica del sistema operativo llamada "control de flujo" esta interceptando el C-s y no le permite a Emacs recibirlo. Para descongelar la pantalla habra que usar C-q. En este caso es conveniente leer la seccion "Spontaneous Entry to Incremental Search" (Acceso espontaneo a busqueda en incrementos) en el manual de Emacs, para obtener consejos en como trabajar con esta caracteristica. Si estas en medio de una busqueda incremental y oprimes (o ), el ultimo caracter presionado sera eliminado y la busqueda ira para atras. Por ejemplo, suponiendo que hayas presionado la "c", para buscar la primera incidencia de "c". Ahora, si presionamos la "u", el cursor ira a la primera incidencia de "cu". Oprime . Esto borra la "u", asi que el cursor regresara a la primera incidencia de "c", nuevamente. Si estas en medio de una busqueda y escribes un caracter de Control o Meta (con excepciones--los que tienen significado especial en una busqueda, como C-s y C-r), la busqueda es cancelada. C-s comienza una busqueda de la siguiente incidencia de cualquier texto que le siga a la posicion actual del cursor. Para hacer una busqueda en reversa se usa C-r. Todo lo que se dijo sobre C-s es aplicable a C-r, excepto que la busqueda es en direccion opuesta. * VENTANAS MULTIPLES --------------------- Una de las caracteristicas mas utiles de Emacs es que puede desplegar mas de una ventana a la vez. >> Mueve el cursor a esta linea y escribe C-u 0 C-l >> Ahora usa C-x 2 lo que dividira la pantalla en 2 ventanas Ambas ventanas contienen este tutorial. la ventana superior contiene el cursor. >> Escribe C-M-V para mover la ventana inferior. (Si no tienes una tecla META verdadera, usa ESC C-v) >> Usa C-x o ("o" de "otra") para mover el cursor a la ventana inferior. >> Usa C-v y M-v para mover el texto en la pantalla. Sigue leyendo las instrucciones en la ventana superior. >> Escribe C-x o de nuevo para regresar el cursor a la pantalla superior. El cursor seguira donde lo dejamos antes de cambiar de ventana. Puedes seguir usando C-x o para cambiar de ventana. En cada ventana el cursor conserva su posicion, pero solo la ventana activa muestra el cursor. Todos los comandos ordinarios son aplicados a la ventana en la que se encuentra el cursor. Llamamos a esta ventana la "ventana seleccionada". El comandio C-M-v es muy util cuando estamos editando el texto en una ventana y usamos el texto en la otra solo como referencia. Puedes conservar el cursor siempre en el cursor de la ventana donde estas editando y usar C-M-v para avanzar el texto en la otra ventana secuencialmente. C-M-v es un ejemplo de un caracter CONTROL-META. Si tienes una tecla META verdadera, se puede escribir C-M-v manteniendo presionadas las teclas Ctrl y Meta (Alt, en las PC) al presionar "v". No importa cual de las teclas CONTROL o META se presiona primero porque su funcion es modificar los caracteres que presionamos. Si no hay una tecla META verdadera, y se usa ESC en su lugar, el orden si importa: se presiona la tecla ESC seguida de Ctrl-v; Ctrl-ESC v no funcionara en este caso. Eso es porque ESC es un caracter en si, no una tecla modificadora. >> Escribe C-x 1 para deshacerse de la ventana inferior (Si escribiste C-x 1 en la ventana inferior, eso se desharia de la ventana superior. Como diciendo "quedate con una sola ventana, en la que estoy ahora"). No es necesario tener el contenido de un mismo buffer en ambas ventanas. Si se usa C-x C-f para abrir un archivo en una ventana, la otra ventana no cambiara. Se puede abrir un archivo diferente en cada ventana. He aqui otra manera de hacer que dos ventanas desplieguen dos cosas diferentes: >> Escribe C-x 4 C-f seguido del nombre de alguno tus archivos. Presiona . Ve como el archivo se abre en una ventana inferior. El cursor ira a la nueva ventana tambien. >> Usa C-x o para regresar a la ventana superior, y C-x 1 para quitar la inferior. * NIVELES DE EDICION RECURSIVA ------------------------------- Algunas veces te meteras en lo que se conoce como un "nivel de edicion recursiva". Esto es indicado por unos corchetes en la linea de modo, encerrando los parentesis que encierran el nombre del modo principal. por ejemplo, veras [(Fundamental)] en lugar de (Fundamental). Para salir del nivel de edicion recursiva, presiona ESC ESC ESC. Eso es un comando para cancelar multiusos. Tambien se puede usar para eliminar ventanas adicionales, y para salirse del minibuffer. >> Usa M-x para entrar al minibuffer; presiona ESC ESC ESC para salir No se puede usar C-g para salir de un nivel de edicion recursiva. Esto es porque C-g es usado para cancelar comandos y argumentos DENTRO de el nivel de edicion recursiva. * OBTENIENDO MAS AYUDA ----------------------- En este tutorial hemos tratado de proporcionar suficiente informacion como para dar un buen comienzo usando Emacs. Hay tanto disponible en Emacs que seria imposible ponerlo todo aqui. Sin embargo, seria conveniente aprender pas acerca de Emacs puesto que tiene muchas mas caracteristicas utiles. Emacs porporciona comandos para leer documentacion sobre comandos de Emacs. Todos estos comandos de ayuda comienzan con el caracter C-h (help, en ingles), el cual es llamado "Caracter de Ayuda". Para obtener cualquier tipo de ayuda, escribe el caracter C-h, y despues un caracter indicando el tipo de ayuda deseada. Si estas completamente perdido, escribe C-h ? y Emacs indicara los tipos de ayuda que tiene disponibles. Si oprimes C-h y decides que despues de todo no quieres ayuda, presiona C-g para cancelarlo. (Algunos sistemas tienen alterado el significado de C-h. En realidad esto no deberia hacerse a nivel global, para todos los usuarios, asi que tienes derecho a quejarste con el administrador. Por lo pronto, si C-h no presenta un mensaje de ayuda en la parte de abajo de la pantalla, intenta presionando F1 o M-x help .) La ayuda mas basica la proporciona C-h c. Escribe C-h seguido del caracter c, y un caracter o secuencia de comando; Emacs despliegara una corta descripcion del comando. >> Escribe C-h c Control-p El mensaje sera algo como C-p runs the command previous-line (C-p corre el comando linea-previa) Esto da el "nombre de la funcion". Los nombres de las funciones de usan principalmente para personalizar y extender a Emacs. Pero como los nombres de las funciones son elegidos para indicar lo que hace un comando, tambien sirven como documentacion muy corta--suficiente para recordar comandos ya aprendidos. Comandos de caracteres multiples como C-x C-s y (si no se tiene una tecla META o EDIT o ALT) v tambien son permitidos despues de C-h c. >> Escribe C-h k Control-p Esto despliega toda la documentacion acerca de la funcion, asi como su nombre, en una ventana de Emacs. Al terminar de leer dicha documentacion, se puede cerrar la ventana con C-x 1. Pero no es necesario hacerlo inmediatamente. Se puede editar nuestro texto, y tener esa documentacion de ayuda como referencia, y despues presionar C-x1. Estas son otras opciones utiles de C-h: C-h f Describe una funcion. Hay que escribir el nombre de la funcion >> Prueba escribiendo C-h f previous-line. Esto despliega toda informacion disponible sobre la funcion que implenenta el comando C-p. C-h a Apropos de comandos. Escribe una palabra y Emacs pondra una lista de todos los comando que usan esa lista. Todos estos comandos pueden invocarse con M-x. Para algunos comandos, el Apropos de comandos tambien presentara una secuencia de uno o dos caracteres que invoca el mismo comando. >> Escribe C-h a file. Esto despliega en otra ventana una lista de todos los comandos M-x que contengan "file" (archivo) en sus nombres. Se veran comandos de caracteres como C-x C-f enlistados junto a los correspondientes comandos de nombre como find-file (encontrar archivo). >> Presiona C-M-v para mover el contenido de la pantalla de ayuda. hazlo varias veces. >> Presiona C-x 1 para deshacerse de la ventana de ayuda * CONCLUSION ------------- Recuerda, para salir de Emacs permanente se usa C-x C-c. Para salir temporalmente a la shell, para poder regresar a Emacs despues, se usa C-z. Este tutorial deberia ser comprensible para cualquier nuevo usuario, asi que si hay algo que no parece muy claro, no te eches la culpa - quejate! * HACIENDO COPIAS DE ESTE DOCUMENTO ------------------------------------ Este tutorial es descendiente de la linea de tutoriales de Emacs iniciada por Stuart Cracraft para el Emacs original. Derechos Reservados (c) 1985, 1999 Free Software Foundation Se da el permiso a cualquier persona para hacer o distribuir copias de este documento, en su forma original, en cualquier medio, con la condicion de que la nota de derechos reservados y la nota de permisos sean preservados, y que el distribuidor otorgue a quienes lo reciban el derecho de redistribuirlo como se menciona aqui. Se da el permiso de distribuir versiones modificadas de este documento, o porciones del mismo, bajo las condiciones antes mencionadas, con la condicion de que mencionen claramente quien las altero. Las condiciones para copiar el programa Emacs en si son mas complejas, pero guiadas por el mismo espiritu. Leer el documento COPYING incluido con tu paquete Emacs para mayor detalles, y dale copias de Emacs y este tutorial a tus conocidos. Ayuda en la batalla contra el obstaculismo en software utilizando, escribiendo, y compartiendo software gratis! * HACIENDO ESTE TUTORIAL EL TUTORIAL DEFAULT --------------------------------------------- Para evitar modificaciones accidentales a este documento, es conveniente hacerlo el tutorial default. Para que este tutorial en Espa~ol sea el default: $ su Password: XXXXXXXX # mv /usr/share/emacs/XY.Z/etc/TUTORIAL \ > /usr/share/emacs/XY.Z/etc/TUTORIAL.INGLES # cp utilidades.emacs.txt /usr/share/emacs/XY.Z/etc/TUTORIAL Se requiere Donde XXXXXXXX es la clave de acceso a root. Mientras que XY.Z es la version de emacs. Por ejemplo, 20.2. Esto hace una copia de respaldo del tutorial original, en Ingles, llamada TUTORIAL.INGLES; en su lugar ponemos el tutorial en Espa~ol. * NOTA FINAL ------------- Este tutorial es una version escrita en Espa~ol en Junio/1999 por Nahual, de Raza-Mexicana . Esta basado en el tutorial incluido con GNU Emacs 20.2.1, y es practicamente identico al mismo en cuanto al contenido tecnico. Las pocas modificaciones o adiciones que se hicieron fueron unicamente para hacer el texto aun mas facil de comprender. Este documento es mantenido por Nahual