Tutorial de EMACS

Fecha Inicio   : 21/10/2001
Última Revisión: 22/05/2003
Autor: NaTaSaB (bugs&feedback a natasab34@mail.ru )
WeB  : http://merlos.org
Copyrights: 
Este fichero es de libre distribución siempre que se mantenga esta 
cabecera con el nombre del autor y la web.
	--==[ÍNDICE DEL TUTORIAL]==--

	1.-  Introducción. ¿Qué es el emacs?
	2.-  Algunas Definiciones
	3.-  Edición de Textos
	4.-  Ficheros y Buffers
	5.-  Cambiando la posición del Cursor
	6.-  Trabajando con varias ventanas
	7.-  Trucos para programadores
	8.-  Miscelánea
	9.-  La línea de comandos
	10.- La ayuda de emacs
	11.- Personalizando emacs
	12.- Despedida y Cierre 	

Introducción. ¿Qué es emacs?

Bueno, el emacs es un editor muy conocido por los LiNuXeRos, se trata de un editor de texto muy potente, también un lector de correo-e, lector de news, para algunas personas una religión y para mi, sobre todo, un potente editor a la hora de programar. Emacs es tremendamente completo y hasta puedes programarle ciertas funciones (es más, tiene su propio lenguaje de programación emacs-Lisp, que está basado en el lenguaje funcional Lisp). Por otra parte, es un programa GNU por lo que es gratis y se distribuyen las fuentes (como casi todo para linux). Como dato histórico cabe destacar que fue uno de los primeros programas que se hizo para Linux, que fue programado por Richard Stallman, el fundador de la FSD (http://www.fsf.org) y del proyecto GNU (www.gnu.org), obviamente, emacs también es uno de los primeros que se hizo bajo la licencia GNU.

Con este documento lo único que pretendo es tener un archivo en el que recoger las combinaciones de teclas de los comandos más comunes del EMACS y algunos trucos que he aprendido mientras utilizaba este programa, yo no soy un gurú de este programa y parte de los contenidos los aprenderé a la vez que escribo este tutorial, por lo tanto si encontráis alguna errata, por favor mandadme un email para que lo repare. Gracias.

Aunque la ayuda del emacs es muy extensa y buena, cabe decir que, a veces, de lo extensa que es puedes llegar a perderte y a veces resulta díficil encontrar lo que buscas, de ahí que haya decidido hacer esta guía rápida.

El enfoque de este texto es para novatos, la verdad es que no se si me he excedido al comentar algunas cosas que se pueden considerar triviales :-? (realimentación a natasab34@mail.ru :DDD)

También, decir que emacs corre en los WinDoS, de hecho, puede que parte de este tutorial lo escriba usando el emacs para WinDoS (Grabaré muy a menudo, si lo hago xD). Si estás corriendo cualquier Linux tienes un 99.999999% de probabilidades de tenerlo instalado o en el CD de tu distribución, de hecho, yo no concivo un Linux sin emacs :). Si estás corriendo WinDoS, tienes una probabilidad aproximable a 0 de tenerlo instalado, pero tranquilo que lo puedes bajar de ftp.gnu.org.

La página oficial de emacs es: http://www.gnu.org/software/emacs/emacs.html

Algunas definiciones

Cuando ejecutas 'emacs' aparece una pantalla similar a la siguiente:

  +----------------------------------------------------------------------+
  |Buffers Files Tools Edit Search Mule Help                             |
  |                                                                      |
  |Welcome to GNU Emacs, one component of a Linux-based GNU system.      |
  |                                                                      |
  |                                                                      |
  |                                                                      |
  | ...                                                                  |
  |                                                                      |
  |---1:---F1  *scratch*         (Lisp Interaction)--L1--All-------------|
  |For information about the GNU Project and its goals, type C-h C-p.    |
  +----------------------------------------------------------------------+
  • Mode Line
      |---1:---F1  *scratch*         (Lisp Interaction)--L1--All-------------|
    

    Línea de modo, es la barra de estado, si es que se puede llamar así, es una línea que aparece en la parte inferior de la ventana emacs, está formada por guiones y por una información muy interesante. es posible que veas al principio tras los dos puntos verás o :-- o :**, los guiones significan que el fichero no ha sido modificado desde la última vez que se grabó y los asteriscos indican que si que se ha modificado. A continuación verás el nombre del fichero y más a la derecha el modo con el que se ha abierto el emacs. Los modos son muy útiles si estás programando ya que el emacs te sangra automáticamente el texto y comprueba parte de la sintáxis, a continuación verás el indicador de línea del cursor y por último la posición en % del documento en la q estás. Pueden aparecer otros mensajes de texto como Ovwrt (si estás en modo sobreescritura, pulsa insert y luego prueba a escribir)

  • El minibuffer

    El minibuffer es la línea inferior de la ventana emacs que se encuentra justo debajo de la mode line. En éste se muestran mensajes al usuario, también tiene otras funciones, como por ejemplo, al abrir un fichero escribir el nombre del archivo, visualizar el comando actual, por él se pide la confirmación a una pregunta, etc... substituye en cierta manera las ventanas de cuadro de diálogo a las que estás acostumbrado con los editores de texto de las X o del "Ventanucos" xD. Si alguna vez estás atascado en el minibuffe, para salir de él, pulsa la combinacion de teclas Control+G (C-g).

  • Leyenda

    En la literatura de ayuda del emacs te encontrarás con una sintáxis distinta a la que posiblemente estás acostumbrado a la hora de referirse a los accesos rápidos via teclado, aquí la resumo:

    C-t = Control + T (donde T es una tecla xD) (ejemplo: C-x = Control+x)
    M-t = ALT + Tecla ó ESC-x (M-x = ALT+x o también ESC+x)
    S-t = Shift+ Tecla (donde SHIFT es ls Tecla que está encima de Control ;-) )
    

Edición de Textos

Comencemos con las teclas comunes que se emplean al usar emacs:

 C-Supr     >> Cortar (también con C-w)
 C-c        >> Copiar
 S-Insert   >> Pegar (también  con C-y) 

 C-_        >> Desacer (Undo) [Control+shift+Guion]**
    >> Borra el caracter anterior al cursor
 C-d        >> Borra el siguiente caracter (equivale Supr en los 
                   editores de DOS)
 M-d        >> Borra la siguiente palabra
 M- >> Borra la palabra anterior
 C-k        >> Borra de el cursor hasta el fin de la linea
 M-k        >> Borra de el cursor hasta el final de la frase	
	       (cuando borras una palabra o una frase, emacs la almacena 
               como si la hubieras cortado, para recuperarla (pegarla) a 
               partir del cursor puedes teclear shif- o C-y)

 C-l        >> Recentra el cursor y redibuja la pantalla, poniéndolo en 
               el mediode la ventana.

M-%	    >> Reemplazar texto con petición de confirmación 
	       (la combinación de teclas es Alt+shitf+5)

Seleccionar para cortar y copiar

Bueno, por lo general en los editores de Windows y en algunos de linux seleccionar con el teclado es algo sencillo, sólo tienes que mantener pulsado el SHIFT y desplazarte con las flechas, pero si intentas esto en el emacs no conseguirás. Como siempre tienes la posibilidad de utilizar el ratón... pero si te acostumbras a usar el teclado para otras funciones como cortar, copiar o pegar, el tener que utilizar el ratón para seleccionar puede ser un poco molesto. Para marcar el incio de la selección pulsa C-Space (siendo Space la barra espaciadora),luego, despázate hasta el final de lo que quieres seleccionar. Pulsa C-w. Como ves el texto ha desaparecido, lo has cortado, si lo que quieres es copiar simplemente pulsa M-w.Para pegar el texto, sólo tienes que ir a donde quieres pegar y pulsar C-y ó S-Insert.

Nota: El undo en emacs guarda toda la historia de la edición, por lo que si editas un texto nuevo, lo escribes y comienzas a pulsar C-_ [Control+Shift+(guión)]puedes llegar a tener el documento en blanco :-) .Una combinación de alternativa es: C-x u

Ficheros y Buffers

Un Buffer no es más que un espacio de memoria reservado por emacs para almacenar temporalmente el texto que estás editando. Por supuesto, puedes trabajar con varios buffers a la vez, e includo dividir el espacio de edición de forma que puedas ver dos ficheros simultáneamente (yo esto lo utilizo sobre todo para programación, divido la ventana en dos y en uno tengo el fichero de tipos (.h) y en otros el fichero fuente (.c), de forma que veo en todo momento las variables de una estructura, los #define, etc...)

C-x C-f >> Abrir un fichero en un nuevo buffer
C-x C-s >> Salvar el fichero con el nombre actual
C-x C-w >> Salvar con nombre distinto (Save as)
C-x C-i >> Insertar un archivo en el buffer actual
C-x C-c >> Salir de emacs (Nota:Siempre pregunta si grabar buffers)
C-x k   >> Cerrar buffer actual.

Varios BuFFerS

C-x C-b >> Listar los buffers abiertos (abre otra ventana)
C-x s   >> Con este comando podrás salvar todos los buffers que tienes abiertos

Movimiento Por Pantalla

Aunque hay otras teclas rápidas que hacen las mismas funciones, he preferido elegir estas ya que para los usuarios que nos hemos migrado de WIN/DOS a Linux nos resulta más cómodo utilizar las flechas

Inicio    	    >> Va al Inicio del Documento (también C-<)
Fin       	    >> Va al final del Documento(también C->)    
C-Flecha-Izquierda  >> Ir al final de la palabra actual
C-Flecha-Derecha    >> Lo mismo que el anterior pero va al inicio
C-Flecha-Abajo      >> Avanzar al siguiente párrafo
C-Flecha-Arriba     >> Retroceder al párrafo anterior            
AvPag               >> Avanzar una pantalla (también con C-v)
RePag               >> Retroceder una pantalla (también con M-v)
C-a		    >> Ir al inicio de da línea actual
C-e                 >> Ir al final de la linea actual
M-a                 >> Ir al inicio de un párrafo
M-e                 >> Ir al Final de un párrafo
M-f		    >> Avanzar una palabra
M-b                 >> Retroceder una palabra

De todas formas, aquí incluyo las combinaciones alternativas, que según los autores de la ayua del editor, al final resultan más comodas, al no tener que llevar la mano hasta la zona de las flechas. Cuestión de gustos :-! (Nota: pegado de la ayuda incluida en el editor)

	C-f	Move forward a character
	C-b	Move backward a character

	M-f	Move forward a word
	M-b	Move backward a word

	C-n	Move to next line
	C-p	Move to previous line

>> Try M-< now, to move to the beginning of the tutorial.
   Then use C-v repeatedly to move back here.

>> Try M-> now, to move to the end of the tutorial.
   Then use M-v repeatedly to move back here.

Trabajando con varias ventanas

C-x 1	>> Ver una sóla ventana.
C-x 2   >> Divide la ventana actual en dos filas
C-x 3   >> Divide la ventana actual en dos columnas
C-x 0   >> (cero) Elimina la ventana actual.
C-x b   >> Cambiar el buffer de la venana actual. En minibuffer aparece prompt
C-x o   >> Cambiar de ventana cuando el aréa de trabajo está dividida en 
           varias ventanas

Miscelánea

Una función muy curiosa que tiene el emacs es la siguiente: Pulsa ALT + una combinacion de números (ejemplo 2 0) y a continuación un caracter, por ejemplo el guión, oh! Qué ha pasado, han aparecido 20 guiones. También se puede hacer esto utilizando la combinacion de teclas:

       
C-u Numero caracter

TRUCOS Para PROGRAMADORES

Si estás aprendiendo a programar o programas con asiduidad en unix, el emacs es una herramienta indispensable para ti. Como ya he comentado anteriormente, cuando abres un fichero con emacs, éste se pone en un modo (Fundamental,C,C++,Java,Pascal,Assembler...) que depende de la extensión del archivo que abras. Y esto del modo para qué te sirve, te estarás preguntando... pues el una de las grandes y mejores funcionalidades es el resalto de sintáxis,es decir, poner colores al código fuente de forma que te es muchísimo más fácil buscar por el código, encontrar errores, leerlo. Pero bien, y esta es la potente capacidad? Pues no, otra gran capacidad es la de reconocer errores sintácticos en el código, por ejemplo, olvidarte de un paréntesis en un if, el ; de cada sentencia, cerrar llaves, etc... Cuando algo de esto sucede, el código automáticamente se se sangra mal, si le das a TAB el texto no aparece donde debería, lo que te indica que has cometido algún error de estos en alguna línea del codigo anterior.

Otra facilidad que te da emacs es el poder ejecutar el make desde el propio editor y poder visualizar los errores en un trozo de ventana.

Si cuando arrancas el emacs con un fichero, estás en uno de los modos de programación y no se te resalta automáticamente la sintáxis puedes activar esta opción iendo al menú Help/Options/Global font Lock (Highligths Syntax) o con el teclado:

     M-x global-font-lock-mode

Nota: NO es necesario que escribas todo ya que tienes la opción de 'auto completicion' pulsando la tecla TAB (ejmplo M-x glo[TAB] obtendrás en el Minibuffer M-x global- luego escribes fon[TAB] y ya se te autocompleta el resto ;-) )

También, como he dicho, puedes usar el make desde el emacs, para ello sólo tienes que pulsar:

	M-x compile

A continuación te pedirá que completes el comando make.Como normalmente no compila todo a la primera, harás pequeñas modificaciones del código y querrás volver a compilar, pero escribir siempre M-x compile es una lata. Esto no es necesario, si pulsas M-x [flecha-arriba] te aparecerá el último comando que has utilizado (y si sigues pulsando te aparecerán los anteriores).

Indentar todo el fichero:

     M-x h  (con esto se selecciona todo el texto)
     C-M-\  (Control+Alt+Altgr+º Combinación muy enrevesada)

Cómo usar la ayuda del emacs

Puesto que emacs puede resultar algo "extraño" para los usuarios nuevos (especialmente si usan/usaban Windows), emacs viene acompañado de una extensa ayuda (en inglés)

C-h ? >> obtener la ayuda emacs
****** POR HACER *****

Personalizando Emacs

BiBLioGraFiA y EnLaCeS Relacionados

Despedida y cierre

Si tras leer este tutorial crees que te ha afectado muy seriamente a tu salud mental y necesitas ir al phiscoanalista, tranquilo, emacs también incluye un sicoanalista (y gratis!!! xDDDD), aunque tendrás que entenderte con él en inglés, puede que te ayude a mejorar tus paranoias mentales o que las empeore de forma irrevocable y las convierta en crónicas. Para pedir cita con el Doctor Emacs, lanza tu emacs y pulsa:

		M-x doctor

La terapia comienza!!!

También, a título de curiosidad:

         M-x dunnet
	 M-x tetris 
	 M-x gomoku
	 M-x life
	 

Bueno, pues aquí se acaba el tutorial, espero que lo hayas encontrado interesante y útil. Si has encontrado algún error o tienes algún comentario referente al tutorial mándame un e-mail a la dirección de la cabecera. Si tienes alguna duda sobre el emacs, escribe un mensaje en el foro de mi página web.

-------------------------------------------------------------------------------
Escrito por NaTaSaB  (mail: natasab34@mail.ru)
Web personal: http://merlos.cjb.net
DTFzine Web : http://dtfzine.cjb.net 
-------------------------------------------------------------------------------