Capítulo 4. La edición de texto: Emacs y VI

Tabla de contenidos
4.1. Emacs
4.1.1. Presentación breve
4.1.2. Comenzando
4.1.3. Manipulación de los buffers (documentos)
4.1.4. Copiar, cortar, pegar, buscar
4.1.5. Salir de Emacs
4.2. VI: el ancestro
4.2.1. Modo de inserción, modo comando, modo ex...
4.2.2. Manipulación de los buffers
4.2.3. Edición de texto y comandos de desplazamiento
4.2.4. Cortar, copiar, pegar
4.2.5. Salir de VI
4.3. Una última palabra...

Como se dijo en la introducción, la edición de texto[1] es una característica fundamental en el uso de un sistema Unix. Los dos editores que vamos a estudiar (brevemente), al principio son un poco difíciles, pero una vez que Ud. entendió las bases, ambos resultan ser herramientas potentes.

4.1. Emacs

Emacs es probablemente el editor de texto más potente que existe. Puede hacer absolutamente de todo y es extensible infinitamente gracias a su lenguaje de programación incorporado, basado en Lisp. Con Emacs, Ud. puede moverse por la web, leer su correo, tomar parte en foros de discusión, hacer el café, y así sucesivamente. Pero lo que Ud. podrá hacer al final de esta sección estará limitado a abrir Emacs, editar uno o más archivos, guardarlos y salir de Emacs. Lo cual no es poco para empezar.

4.1.1. Presentación breve

Invocar a Emacs es relativamente simple:

emacs [archivo] [archivo...]

Emacs abrirá cada archivo ingresado como argumento en un buffer hasta el número máximo de dos buffers visibles a la vez, y le presentará el buffer *scratch* si Ud. no especifica archivo alguno. Si Ud. está en X, también tendrá menú disponibles, pero en este capítulo trabajaremos con el teclado. C-x representa la secuencia Control+x, M-s representa la secuencia Alt+s.

4.1.2. Comenzando

Es tiempo de poner manos a la obra. A modo de ejemplo, abramos dos archivos, archivo1 y archivo2. Si estos dos archivos no existen, serán creados tan pronto como Ud. escriba algo en ellos.

$ emacs archivo1 archivo2

para obtener la ventana que se muestra en la Figura 4-1.

Figura 4-1. Emacs, editar dos archivos a la vez

Como puede ver, se crearon dos buffers: uno por archivo. También está presente un tercero en la parte inferior de la pantalla (donde Ud. ve (New file)); este es el mini-buffer. Ud. no puede ir, por las suyas, a este buffer, Emacs debe invitarlo durante las entradas interactivas. Para cambiar el buffer corriente ingrese C-x o. Ud. puede ingresar texto como en un editor "normal", y borrar caracteres con la tecla Supr o la tecla Backspace.

Para desplazarse por ahí, puede usar las teclas de las flechas, pero también otras combinaciones de teclas: C-a para ir al principio de la línea, M-< para ir al principio del buffer y M-> para ir al final del mismo. Hay muchas otras combinaciones, incluso para cada una de las teclas de las flechas[2].

Tan pronto como quiera guardar los cambios hechos en un archivo, ingrese C-x C-s, o si Ud. quiere grabar el contenido del buffer en otro archivo, ingrese C-x C-w y Emacs le pedirá el nombre del archivo en el cual se escribirá el contenido del buffer. Ud. puede usar el "completado" para hacer esto.

4.1.3. Manipulación de los buffers (documentos)

Si quiere, Ud. puede mostrar un solo buffer en la pantalla. Hay dos formas de hacer esto:

  • Ud. está en el buffer que quiere ocultar: ingrese C-x 0;

  • Ud. está en el buffer que quiere conservar en la pantalla: ingrese C-x 1.

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

  • ingrese" C-x b" e introduzca el nombre del buffer que quiere,

  • ingrese C-x C-b, entonces se abrirá un buffer nuevo, denominado *Buffer List*; Ud. se puede desplazar por este buffer usando la secuencia C-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 Ud. ha hecho su elección.

Si Ud. ha finalizado con un archivo y quiere deshacerse del buffer asociado, ingrese C-x k. Entonces Emacs le preguntará qué buffer debe cerrar. Predeterminadamente, es el nombre del buffer en el cual Ud. se encuentra en ese momento; si Ud. quiere deshacerse de un buffer que no sea el propuesto, ingrese su nombre directamente o bien presione TAB: Emacs abrirá entonces todavía otro buffer denominado *Completions* dando la lista de elecciones posibles. La tecla Intro valida la elección.

Ud. también puede restaurar dos buffers visibles en la pantalla al mismo tiempo; para hacer esto ingrese C-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 Ud. simplemente procederá como se describió anteriormente para moverse entre los buffers.

Ud. puede abrir otros archivos en cualquier momento, usando C-x C-f. Entonces Emacs le pedirá el nombre del archivo y Ud. dispondrá otra vez del completado.

4.1.4. Copiar, cortar, pegar, buscar

Suponga que estamos en la situación de la Figura 4-2.

Figura 4-2. Emacs, antes de copiar el bloque de texto

Primero, necesitará seleccionar el texto que Ud. quiere copiar. En X, Ud. lo puede hacer usando el ratón, e incluso se resaltará el área seleccionada. Pero aquí estamos en modo texto :-) En este caso, queremos copiar toda la oración. Primero, necesitará poner una marca para indicar el comienzo del área. Asumiendo que el cursor está en la posición donde se encuentra en la figura anterior, primero ingrese C-ESPACIO (Control + barra espaciadora); Emacs entonces mostrará el mensaje Mark set en el mini-buffer. Luego muévase al principio de la línea con C-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 el caso presente será toda la línea. Luego, ingrese M-w (para copiar) o C-w (para cortar). Si Ud. copia, Emacs volverá brevemente a la posición de la marca, para que Ud. pueda ver el área seleccionada.

Luego vaya al buffer sobre el cual quiere copiar el texto, e ingrese C-y, para obtener lo que se muestra en la Figura 4-3.

Figura 4-3. Emacs, después de la copia del bloque de texto

De hecho, lo que Ud. 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 C-y simplemente "pega" la región que está en el tope. Si Ud. quiere tener acceso a otras regiones, presione C-y ,y luego M-y hasta que Ud. obtiene el texto deseado.

Para buscar texto, vaya al buffer deseado e ingrese C-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 C-s de nuevo. Cuando Emacs llega al final del buffer y no encuentra más ocurrencias, Ud. puede ingresar C-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 M-%. Emacs le pedirá la cadena a buscar, con qué reemplazarla, y le pide confirmación para cada ocurrencia que encuentra.

Una última cosa muy útil: C-x u deshace la operación previa. Ud. puede deshacer tantas operaciones como quiera.

4.1.5. Salir de Emacs

El atajo para esto es C-x C-c. Entonces, Emacs le pedirá si Ud. quiere grabar las modificaciones hechas a los buffers si todavía no los ha grabado.

Notas

[1]

"Editar texto" significa modificar el contenido de un archivo que principalmente contiene letras, dígitos, y signos de puntuación; tales archivos pueden ser mensajes electrónicos, código fuente de programas, documentos, o archivos de configuración.

[2]

Emacs ha sido diseñado para funcionar en un número máximo de entornos, debido a que incluso hoy día hay terminales que no tienen teclas de las flechas. Esto es incluso más cierto en VI.


Tux sobre Estrella por MandrakeSoft Linux es una marca registrada de Linus Torvalds. Todas las otras marcas registradas y copyrights son la propiedad de sus respectivos dueños.
A menos que se diga lo contrario, todo el contenido de estas páginas y todas las imágenes tienen Copyright de MandrakeSoft S.A. y de MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/