1. Emacs

Emacs es probablemente el editor de texto más potente que existe. Puede hacer absolutamente de todo y es extensible ad-inifitum gracias a su lenguaje de programación incorporado, basado en lisp. Con Emacs, puede navegar por la web, leer su correo, tomar parte en foros de discusión, hacer el café, y así sucesivamente. Esto no es para decir que en este capítulo aprenderá a hacer todo eso, pero tendrá un buen comienzo abriendo Emacs, editando uno o más archivos, guardándolos y saliendo de Emacs.

Si, luego de leer esto, desea aprender más acerca de Emacs, puede echar un vistazo a este Tutorial de introducción a GNU Emacs (en inglés).

1.1. Presentación breve

Emacs se invoca de la manera siguiente:

emacs [archivo1] [archivo2...]

Emacs abrirá cada archivo ingresado como argumento en un buffer diferente. Se se especifican más de dos archivos en la línea de comandos, la ventana se dividirá automáticamente en dos y habrá una parte con el último archivo especificado mientras que la otra parte mostrará una lista de los buffers disponibles. Si arranca Emacs sin especificar archivos en la línea de comandos se le presentará el buffer *scratch*. Si está en X, los menús estarán disponibles y los podrá utilizar con el ratón, pero si está en modo texto todavía puede acceder a los menús presionando la tecla F10. En este capítulo nos concentraremos en trabajar estrictamente con el teclado y sin menús.

1.2. Comenzando

Es tiempo de poner manos a la obra. Para nuestro ejemplo, comencemos abriendo dos archivos, archivo1 y archivo2. Si estos archivos no existen, serán creados tan pronto como Usted escriba algo en ellos:

$ emacs archivo1 archivo2

Al teclear ese comando obtendrá la ventana siguiente:

Figura 4.1. Editando dos archivos a la vez

Editando dos archivos a la vez

Como puede ver, se crearon dos buffers. También está presente un tercero en la parte inferior de la pantalla (donde se ve (New file)); este es el mini-buffer. No se puede acceder directamente a este buffer. Emacs debe invitarlo durante las entradas interactivas. Para cambiar el buffer corriente teclee Ctrl-X O. Puede ingresar texto como en un editor “normal”, y borrar caracteres con la tecla Supr o la tecla Retroceso.

Para desplazarse por ahí, puede usar las teclas de las flechas, así como también estas otras combinaciones de teclas: Ctrl-A para ir al principio de la línea, Alt-< o Ctrl-Inicio para ir al principio del buffer, y Alt-> o Ctrl-Fin para ir al final del mismo. Hay muchas otras combinaciones, incluso para cada una de las teclas de las flechas[12].

Tan pronto como quiera guardar los cambios hechos en un archivo, ingrese Ctrl-X Ctrl-S, o si desea grabar el contenido del buffer en otro archivo, ingrese Ctrl-X Ctrl-W y Emacs le pedirá el nombre del archivo en el cual se debería escribir el contenido del buffer. Puede usar el “completado” para hacer esto presionando la tecla Tab al igual que en bash.

1.3. Manipulación de los buffers

Si lo desea, Usted puede mostrar un buffer solo en la pantalla. Hay dos formas de hacer esto:

  • Si Usted está en el buffer que quiere ocultar: ingrese Ctrl-X 0.

  • Si Usted está en el buffer que quiere conservar en la pantalla: ingrese Ctrl-X 1.

Por lo tanto, hay dos maneras de restaurar el buffer que desea en la pantalla:

  • ingrese Ctrl-X B e introduzca el nombre del buffer que quiere, o

  • ingrese Ctrl-X Ctrl-B, entonces se abrirá un buffer nuevo, denominado *Buffer List*; se puede desplazar por este buffer usando la secuencia Ctrl-X O, luego seleccione el buffer que desea y presione la tecla Intro, o si no ingrese el nombre del buffer en el mini-buffer. El buffer *Buffer List* vuelve a segundo plano una vez que Usted ha hecho su elección.

Si ha finalizado con un archivo y desea deshacerse del buffer asociado, ingrese Ctrl-X K. Entonces Emacs le preguntará qué buffer debe cerrar. Predeterminadamente, es el nombre del buffer en el cual Usted se encuentra en ese momento; si desea deshacerse de un buffer que no sea el propuesto, ingrese su nombre directamente o bien presione Tab: Emacs abrirá entonces otro buffer más denominado *Completions* dando la lista de elecciones posibles. Confirme su elección con la tecla Intro.

También puede restaurar dos buffers visibles en la pantalla al mismo tiempo; para hacer esto ingrese Ctrl-X 2. Predeterminadamente, el nuevo buffer creado será una copia del buffer corriente (lo que le permite, por ejemplo, editar un archivo grande en varios lugares “a la vez”), y simplemente procederá como se describió anteriormente para moverse entre los buffers.

Puede abrir otros archivos en cualquier momento, usando Ctrl-X Ctrl-F. Emacs le pedirá el nombre del archivo y Usted puede volver a utilizar el completado si lo encuentra más conveniente.

1.4. Copiar, cortar, pegar, buscar

Suponga que estamos en la situación de la Figura 4.2, “Emacs antes de copiar el bloque de texto”.

Figura 4.2. Emacs antes de copiar el bloque de texto

Emacs antes de copiar el bloque de texto

Primero, necesitará seleccionar el texto que desea copiar. En este ejemplo, deseamos copiar toda la oración. El primer paso es poner una marca al comienzo del área. Asumiendo que el cursor está en la posición donde se encuentra en Figura 4.2, “Emacs antes de copiar el bloque de texto”, la secuencia de comandos sería Ctrl-Espacio (Ctrl y la barra espaciadora). Emacs mostrará el mensaje Mark set en el mini-buffer. Luego muévase al principio de la línea con Ctrl-A. El área seleccionada para copiar o cortar es toda el área que se encuentra entre la marca y la posición corriente del cursor, entonces en este caso será toda la línea. Luego, ingrese Alt-W (para copiar) o Ctrl-W (para cortar). Si Usted copia, Emacs volverá brevemente a la posición de la marca, para que Usted pueda ver el área seleccionada.

Finalmente vaya al buffer sobre el cual quiere copiar el texto, e ingrese Ctrl-Y. Esto le dará el resultado siguiente:

Figura 4.3. Copiando texto con Emacs

Copiando texto con Emacs

De hecho, lo que Usted acaba de hacer es copiar texto al kill ring (anillo de los muertos) de Emacs: este kill ring contiene todas las regiones copiadas o cortadas desde que se inició Emacs. Cualquier región copiada o cortada se pone al comienzo del kill ring. La secuencia Ctrl-Y simplemente “pega” la región que está en el tope. Si desea tener acceso a otras regiones, presione Ctrl-Y, y luego Alt-Y hasta que obtiene el texto deseado.

Para buscar texto, vaya al buffer deseado e ingrese Ctrl-S. Entonces, Emacs le pedirá la cadena a buscar. Para comenzar una búsqueda nueva con la misma cadena, todavía en el buffer corriente, ingrese Ctrl-S de nuevo. Cuando Emacs llega al final del buffer y no encuentra más ocurrencias, puede teclear Ctrl-S de nuevo para volver a iniciar la búsqueda desde el principio del buffer. Al presionar la tecla Intro se finaliza la búsqueda.

Para buscar y reemplazar, ingrese Alt-%. Emacs le pedirá la cadena a buscar, con qué reemplazarla, y le pide confirmación para cada ocurrencia que encuentra.

Para deshacer, teclee Ctrl-X U o Ctrl-Mayús-- lo cual deshace la operación previa. Puede deshacer tantas operaciones como desee.

1.5. Salir de Emacs

El atajo para salir de Emacs es Ctrl-X Ctrl-C. Si no ha guardado sus cambios, Emacs le preguntará si desea o no guardar los buffers.



[12] Emacs ha sido diseñado para funcionar en una gran variedad de máquinas, algunas de las cuales incluso no tienen teclas de las flechas en el teclado. Esto es incluso más cierto en Vi.