RAFA !!
Opciones Curso Básico de Linux

Emacs

Emacs, junto con VI, ha sido uno de los primeros editores de texto para UNIX. A pesar de visualmente presentar un interfaz similar al de un editor de texto corriernte, como podría ser joe, el edit de MS-DOS, o similar, lo cierto es que tiene muchisimas posibilidades que uno no atribuiría a un editor de texto en modo consola. Por ejemplo, el indentado automático de código Pascal, Java, C, o cualquier lenguaje para el que haya escrito un módulo para Emacs de asistencia a la programación, nos ofrece posibilidades de trabajar con CVS, enviar correo electrónico, y un largo etcétera de posibilidades. Como anécdota cabe contar, para que se hagan una idea, el manual de GNU Emacs, en formato ASCII ocupa cerca de 1.1 MB.

Hablemos de cómo manejarse con los menús de Emacs. Existen cientos de combinaciones de teclas en Emacs que nos permiten hacer cualquier cosa sin ver un menú. Los usuarios expertos de Emacs valoran esta posibilidad, pues a la hora de escribir con prisas, un menú puede ser algo muy incómodo. Pero para ustedes que están empezando, recuerden: la tecla <F10> es su amiga.

La tecla <F10> nos da acceso a todos los menús de Emacs, menu archivo, edición, cambio entre las distintas ventanas de edición de texto, etc.

Empezemos viendo como editar un fichero de texto básico. En la consola ponemos:


$ emacs prueba.c

y escribimos un programa común y corto:


#include <stdio.h>
int
main()
{
printf(" Hola Mundo ";
}

Como podemos apreciar, Emacs hace retroceder el cursor al cerrar los corchetes y los paréntesis, para indicarnos donde los abrimos y tener una referencia de cuáles quedan aún por cerrar. Probemos ahora a guardar nuestro pequeño programa C. Para ello pulsamos <F10> y una vez pulsada <F10> vemos que la tecla B nos daría acceso al menú buffers (que no son otra cosa que las distintas ventanas que tenemos abiertas), la F nos daría acceso al menú files (el cual hace practicamente lo mismo que el menú archivo de cualquier editor de texto, etc... y la tecla C nos daría acceso, si las tenemos instaladas, a las posibilidades que ofrece emacs para la edición de código en C. Como solo queremos guardar, pulsamos después de <F10>,S. Ya lo tendríamos guardado. Otra cosa muy importante, en cualquier programa es saber salir. Esto se hace con <F10>,F y a continuación la tecla S. Nos pregunta, si no lo hemos hecho ya, que si deseamos guardar. Escribimos yes (hay que escribirlo entero) o no, y a continuación nos pregunta si realmente queremos salir, a lo cual ahora si, responderemos y para si o n para no.

Una función muy básica tambien es la de buscar y reemplazar texto. Esto puede hacerse cómodamente con la combinación <Ctrl>-s, dejando pulsado la tecla <Control> y pulsando la s, y a continuación poniendo que queremos buscar y pulsando Enter. Una vez encuentre la primera coincidencia, puede seguir buscándose el mismo patrón pulsando de nuevo simplemente <Ctrl>-s.

Podemos saber en todo momento que estamos haciendo fijándonos en la linea inferior de la pantalla de Emacs.

Para reemplazar trozos de texto, cosa también de supervivencia, podemos hacerlo fácilmente de la siguiente forma:

  1. Pulsamos <F10>.
  2. Pulsamos la S, que corresponde al menú Search.
  3. Nos sale el siguiente menú:


Possible completions are:
S==>Search... R==>Regexp Search...
B==>Search Backwards... 0==>Regexp Search Backwards...
1==>Repeat Search 2==>Repeat Regexp
3==>Repeat Backwards 4==>Repeat Regexp Backwards
5==>Bookmarks F==>Find Tag... (M-.)
Q==>Query Replace... (M-%) 6==>Query Replace Regexp...

Pulsamos Q y nos dice:

Query replace: donde escribiremos lo que queremos buscar para ser reemplazado, y pulsamos Enter.

Luego, emacs nos pregunta: query replace with: donde escribiremos el texto con el cual queremos sustituir, y pulsaremos enter.

En este menú, encontramos también una serie de comandos, como query regexp, query replace regexp, etc., que aunque no entraremos en ellos, son muy interesantes, pues nos permiten buscar, no ya patrones de texto concretos, sino un tipo de búsqueda más avanzada por medio de expresiones regulares (regular expressions en inglés), esto es, "todas las palabras que empiecen por c y terminen por j" o "todas las mayúsculas cambiarlas por minúsculas" en el caso de query replace regexp.