Herramientas de usuario

¡Esta es una revisión vieja del documento!


Editor Contextual Compatible de Edimburgo

El Editor Contextual Compatible de Edimburgo (ecce) es un editor de texto basado en líneas escrito a finales de la década de 1960 para las terminales teletipo de la minicomputadora PDP-10. El original fue escrito en lenguaje BCPL por Hamish Dewar, pero ha sido reescrito al lenguaje C en 1984.

Ecce fue uno de los primeros editores conocidos como “modales” (con modo de inserción y de comandos). Inspiró a vi y durante mas de 25 años incitó culto entre los entornos multiusuario.

Si bien su almacén es limitado (768 kilobytes), es suficiente para unas 350 páginas de texto aproximadamente.

Uso de Ecce

Ejecución de Ecce

Si bien la sintaxis básica para editar un fichero es:

ecce fichero

Si bien normalmente querrías utilizar un fichero de texto muleto para evitar cometer errores, notarás que Ecce es tan antediluviano que es incapaz de crear uno de forma autónoma (en caso de que este no exista ya). Por lo tanto deberás recurrir a elaborar un fichero en blanco con touch, indicando un fichero origen.txt. Por ejemplo:

touch fichero.txt ;
./ecce origen.txt destino.txt
ecce fichero_origen fichero_destino

Prompts de Modo

Al iniciar, Ecce presentará en la terminal el tamaño de memoria disponible para su almacén (“buffer”), y aguardará órdenes:

Espacio de buffer = 768 KBytes
Ecce
>

Durante su operación, Ecce puede presentar alguno de sus dos prompts modales:

  • Prompt del Modo de Comandos: >
  • Prompt del Modo de introduccción de texto: :

Mecanografiado básico

Para mecanografiar texto de forma básica con Ecce, basta conocer sólo cuatro comandos de una letra.

Comando Acción
g Mecanografiar una línea de texto individual
: Detiene el modo de inserción
m mueve el puntero a la línea siguiente
p Imprime la línea actual

En el prompt de comandos > ordena el comando g (“mecanografiar una línea”) y presiona la tecla Intro.

Comprueba que ha aparecido un prompt de introducción de texto en forma de un : (esto indica que aguarda que escribas el texto para la línea). Mecanografía la línea de texto deseado, y al finalizarla presiona la tecla Intro para almacenarla en el buffer.

En el caso de UNIX, una línea equivale a un párrafo entero; este puede tener más de los 80 o 132 caracteres tradicionales de una línea impresa en papel.

Si es necesario, puedes repetir la operación para agregar otra línea individual.

Mecanografiado indefinido

Si en el prompt de comandos > en lugar de g introduces el comando g* (“mecanografiar líneas indefinidamente”), al presionar la tecla Intro Ecce permite mecanografiar líneas indefinidamente. Cada vez que presiones la tecla Intro agregará una línea adicional. Una vez que hayas almacenado todas las líneas deseadas, puedes detener el modo de introducción de texto mediante :; esto te devolverás al prompt de comandos >.

Al llegar al final del documento, recibirías el mensaje *** FIN *** y volverás al prompt de comandos >.

Guardar y salir

Para guardar los cambios del buffer almacén en el fichero destino y cerrar el editor, desde el prompt de comandos >, introduce el comando especial %c.

Edición avanzada

La edición de texto avanzada supera al de una máquina de escribir tradicional.

Movimiento y corrección

Imagina a Ecce como una antigua máquina de escribir. En aquellas girabas el rodillo para avanzar o retroceder en las líneas en el papel.

En Ecce puedes alterar la posición actual de edición en el documento (denominada “puntero”) utilizando los comandos de movimiento. El comando m (“mover”), por si solo avanza a la línea siguiente, pero si antepones el signo - podrás retroceder a la línea anterior. Si lo combinas con un número entero, podrás avanzar o retroceder una determinada cantidad de líneas.

Si utilizas el modificador *, podrás avanzar de forma indefinida hasta llegar al final del documento (o hasta el principio, en caso de utilizar el comando m-*).

Recuerda que al llegar al finsl del documento darás con el indicador *** FIN ***.

Comandos de Movimiento
Comando Movimiento del Puntero
r Mueve el puntero un carácter a la derecha (en la línea actual)
l Mueve el puntero un carácter a la izquierda (en la línea actual)
t/texto Transporta el puntero inmediatamente después de la cadena texto (en la línea actual)
m Mueve el puntero a la línea siguiente
m- Mueve el puntero a la línea anterior
* o 0 Repetición indefinida (“repite la acción no poder cumplir mas”)
Comandos de corrección básica
Comando Borrado realizado
e Borra un carácter a la izquierda del puntero
e- Borra un carácter a la derecha del puntero
k Elimina la línea del puntero
k- Elimina la línea anterior al puntero
i/texto Inserta la cadena texto a la derecha del puntero
i-/texto Inserta la cadena texto a la izquierda del puntero
gn permite introducir n líneas.
d/texto En la línea actual, borra la primer iteración de la cadena texto tras el puntero
d-/texto En la línea anterior, borra la iteración previa de texto
u/texto Borra todo hasta la cadena texto (en la línea actual)
Buscar y reemplazar

Para esta operación se utilizan dos comandos:

f/cadena1/ A partir del puntero, buscará cadena1 en todo el fichero.
s/cadena2 Tras usar f/cadena1, la reemplaza con cadena2

Comandos Especiales

Los comandos especiales de Ecce se utilizan para funciones

Comando especial Resultado
%c Guarda los cambios y sale del editor
%a Abandona la edición y sale del editor
%v Imprime la versión de Ecce

Edición Avanzada

Junto a los comandos de una letra simple, Ecce dispone la posibilidad de usar opciones más avanzadas que te permiten editar con mayor conveniencia.

Comandos de Edición Avanzada

b Divide la línea en la posición del puntero.
j Une la línea desde el puntero a la siguiente línea
q Mueve la línea actual a la siguiente
q- Mueve la línea actual a la anterior
a Ajusta el largo
C Cambia mayúsculas con Shift derecho
C- Cambia a minúsculas con shift izq

Como regla general, si introduces un número n junto a tu comando, y ejecutarás dicho comando recursivamente n veces. Por ejemplo:

p23 Imprime las 23 líneas siguientes al puntero
m10 Sube el puntero diez líneas
g5 Deja 5 líneas de texto en blanco debajo del puntero

De la misma manera es posible invertir el orden del comando antecediendo al número n con un signo -. Por ejemplo:

p* Imprime todo desde el puntero hasta el final del texto
p-23 Imprime las 23 líneas anteriores al puntero
p-* Imprime todo hasta el inicio del texto
m-10 Retrocede el puntero diez líneas
m-* Retrocede el putnero todas las líneas (vuelve al inicio del texto)

Como en el caso anterior, estos pueden repetirse indicándole números apropiados:

f/texto/4 Busca la 4ta. iteración de “texto”
r40 Mueve a la derecha 40 caracteres

Estas órdenes pueden encadenarse juntas:

m23 f/texto/ p3

Comandos Compuestos

Los comandos compuestos son secuencias de comandos cerrados entre paréntesis.

La utilidad de estos comandos está en su repetición en bucle, condicional o incondicional. Observa estos ejemplos:

Operación Ejemplo Significado/efecto
0 o * Repetición indefinida (“repite hasta no poder cumplir mas”)
r0 Mueve el puntero al final de la línea
(mr)0 Busca la primer línea en blanco
e-0 Borra hacia atrás hasta el comienzo de la línea
? Ejecución opcional (se ignora la condición de falla)
((r61p)?m)0 Imprime las líneas con no más de 60 caracteres
, Ejecución alterna (“si el primer intento falla, ejecuta el siguiente, etc”)
(r81lb,m)0 Divide las líneas con más de 80 caracteres
(f/River/(v/Bocado/,e5i/Boca/))* “Reemplaza River con Boca excepto para Bocado”
\ Falla invertida
(mv'+'\)0 Busca la siguiente línea que comienza con `+

Si sólo introduces un número en la línea de comandos, Ecce repetirá el comando introducido anteriormente una n cantidad de veces.

Podrás delimitar patrones por cualquier caracter excepto letras, dígitos, y aquellos que tienen significación definida. Podrás usar: , /, $, >, +, ., :, = y _.

Este sitio web utiliza cookies para guardar datos esenciales de su actividad, como su autenticación. Al entrar acepta el uso de cookies.

Más información