martes, 19 de octubre de 2010

Emacs

¿Que es GNU Emacs?
GNU Emacs posiblemente sea el editor de textos más potente que exista para
sistemas Unix-Linux, lo cual es tanto como decir que se trata del editor de textos
más potente que existe en términos absolutos.

Las características que le hacen único son las siguientes:

Reconocimiento de formatos:
Por reconocimiento de formatos hay que entender la posibilidad de detectar que cierto fichero sigue determinadas convenciones de sintaxis (correspondientes normalmente a un lenguaje de programación) de tal modo que, una vez reconocido el formato al que se ajusta el texto del documento, Emacs pueda proporcionar ciertos mandatos especialmente útiles para ese tipo de documentos, así como resaltar mediante procedimientos gráficos la sintaxis del documento, distinguiendo entre las instrucciones y los datos, e incluso diferenciando entre distintas categorías de instrucciones.

Facilidad de configuración y personalización:
En Emacs casi todo es personalizable. Podemos crear mandatos nuevos, asignar combinaciones de teclas diferentes a las previstas por defecto, alterar ciertas variables de las que depende el funcionamiento del propio Emacs, etc. De hecho el propio nombre Emacs procede de una contracción de la expresión Editor de Macros, porque fue concebido como eso: como un editor de macros; y recordemos que el término macro suele significar (aunque no siempre) mandato definido por el usuario de una determinada aplicación dirigido a personalizarla.

Extensibilidad:
La facilidad para configurar Emacs queda ampliamente superada por su extensibilidad. Que Emacs es extensible significa que cualquiera que sepa Emacs Lisp (un dialecto de Lisp en el que está escrita la mayor parte del propio Emacs) puede escribir nuevos mandatos de Emacs en dicho lenguaje de programación e incorporarlos al sistema, incluso sobre la marcha, sin necesidad de reinstalar o reiniciar el propio Emacs. Esta facilidad para extender y ampliar el sistema se traduce en que existen numerosos paquetes de ampliación de Emacs que le permiten reconocer nuevos formatos, o le dotan de mandatos específicos para ciertos formatos o para ciertos usos, haciendo que, en definitiva, Emacs sirva para casi todo.


Los comandos de Emacs
Emacs funciona mediante la ejecución de comandos: abrir o cerrar un fichero, insertar texto en él o borrarlo, desplazar el cursor por el texto, realizar una búsqueda... todo se hace mediante mandatos. En teoría incluso escribir una letra es fruto de un comando.


Principales comandos en Emacs:
C = CONTROL

M = META (ESC o ALT)

Abrir, insertar y guardar ficheros
C-x C-f (find-file): Abre un fichero existente o si no abre uno nuevo.

C-x C-v (find-alternate-file): Carga un fichero diferente en ese mismo buffer, nos sirve si por ejemplo queríamos abrir un fichero y nos hemos equivocado al escribir el nombre.

C-x i (insert-file): Inserta el contenido de un fichero dentro del buffer actual (en la posición del cursor).

C-x C-s (save-buffer): Guarda el contenido del buffer en el fichero asociado (y si no lo tiene pregunta el nombre de fichero con el que guardarlo).

C-x C-w (write-file): Guarda el contenido del buffer preguntando el nombre del fichero en el que guardar.

C-x C-c Sale de emacs, preguntando si guardar los cambios o no en caso de que haya buffers modificados sin guardar.

Ayuda
C-h ? (help): Muestra las opciones de ayuda de Emacs.

C-h t (help-with-tutorial): Inicia un tutorial de introducción a Emacs.

C-h k (describe-key): Muestra información sobre una combinación de teclas. Por ejemplo C-h k C-x i muestra una descripción del comando insert-file.

C-h f (describe-function): Muestra información sobre un comando. La información mostrada es la misma que en el anterior pero en lugar de pasarle una combinación de teclas le pasamos el comando directamente.

Moviéndonos por los ficheros
 C-f (forward-char): Mueve el cursor un carácter hacia adelante.

C-b (backward-char): Mueve el cursor un carácter hacia atrás.

C-p (previous-line): Mueve el cursor a la línea anterior.

C-n (next-line): Mueve el cursor a la línea siguiente.

M-f (forward-word): Mueve el cursor una palabra hacia adelante.

M-b (backward-word): Mueve el cursor una palabra hacia atrás.

C-a (beginning-of-line): Mueve el cursor al principio de la línea.

C-e (end-of-line): Mueve el cursor al final de la línea.

M-a (backward-sentece): Mueve el cursor una frase hacia atrás.

M-e (forward-sentece): Mueve el cursor una frase hacia adelante.

M-{ (backward-paragraph): Mueve el cursor un párrafo hacia atrás.

M-} (forward-paragraph): Mueve el cursor un párrafo hacia adelante.

C-x [ (backward-page): Mueve el cursor una página hacia atrás.

C-x ] (forward-page): Mueve el cursor una página hacia adelante.

Nota: Emacs se mueve entre páginas usando un delimitador de página (que se define mediante la variable page-delimiter). En el modo texto el delimitador de página (no imprimible) se puede insertar mediante
  
C-v (scroll-up): Avanza una pantalla hacia adelante, mostrando dos líneas de la pantalla anterior.

M-v (scroll-down): Avanza una pantalla hacia atrás

M-> (end-of-buffer): Lleva el cursor al final del fichero.

M-< (beginning-of-buffer): Lleva el cursor al principio del fichero.

M-x goto-line n RETURN: Mueve el cursor a la línea n del fichero.

M-x goto-char n RETURN: Mueve el cursor al carácter n del fichero.


Repetir comandos
 M-n (digit-argument): Repite el comando escrito a continuación n veces.

C-u n (universal-argument): Hace exactamente lo mismo que la anterior.


Redibujar la pantalla
C-l (recenter): Redibuja la pantalla, poniendo la línea actual en el centro. Este comando es útil cuando por ejemplo estamos editando en consola y el kernel nos tira mensajes, con este comando Emacs redibuja la pantalla con la información del buffer. También nos es útil si estamos editando una porción de texto que nos aparece al final del display, usamos este comando y nos centra la línea actual, así vemos lo que tenemos por encima y por debajo.

Bibliografia