ecce

¡Esta es una revisión vieja del documento!


Ecce (Editor de Contexto Compatible de Edimburgo) es un editor de texto basado en líneas programado 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.

Ejecutar Ecce

Para ejecutar Ecce debes usar la siguiente sintaxis:

./ecce fichero_origen fichero_destino

Notarás que Ecce es tan antediluviano es incapaz de crear de forma autónoma un fichero de origen (si este no existiese). Por lo tanto deberás recurrir a crearlo con touch, indicando un fichero origen.txt. Por ejemplo:

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

Al iniciarse correctamente, Ecce presentará la memoria disponible para su almacén (“buffer”), y aguardará tus órdenes:

Espacio de buffer = 768 KBytes
Ecce
>

Durante su operación Ecce puede mostrar uno de sus dos prompts, indicativos de su que definen su modo de operación:

  • Prompt del Modo de Comando: >
  • Prompt del Modo de Inserción de texto: :

Para el uso más básico es suficiente con conocer sólo cuatro comandos de una letra.

Comando Acción
g* Agregar una líneas
: 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 > introduce el comando g* (“agregar líneas indefinidiamente”) y presiona la tecla Intro.

Verás el cambio al prompt de inserción texto en forma de :. Esto indica que aguarda que introduzcas el texto para la línea. En dicho prompt : mecanografía la línea de texto deseada, y al terminar presiona la tecla Intro para almacenarla en el buffer. Puedes continuar agregando líneas indefinidamente.

Una vez que hayas finalizado la inserción de la(s) línea(s) de texto deseadas desde el prompt de inserción de texto, detén el modo de inserción ingresando :. Volverás al prompt de comandos >.

Si en lugar de g* ordenases el comando g, se generaría una única línea, tras lo cual, al introducirle texto, si no existen otras líneas. Al llegar al fin del documento de una sola línea recibirías el mensaje *** FIN *** y volverás al prompt de comandos >.

Guardar y salir

Podrás guardar los cambios en al fichero destino y cerrar el editor desde el prompt de comandos >, introduciendo el comando %c.

Movimiento y corrección

Imagina a Ecce como una antigua máquina de escribir, en las cuales al girar el rodillo se avanza o retrocede en las líneas.

Para alterar la posición actual de edición en el documento (llamada “puntero”) se utiliza el comando m (“mover”). Por si solo avanza una línea, pero si antepones el con el signo - podrás retroceder una línea. Si lo combinas con una cifra, podrás avanzar o retroceder una determinada cantidad de líneas. Si utilizas el *, el avance será hasta el final del documento (o hasta el principio, si sigues la lógica del programa e utilizas el comando m-*).

Recuerda que al llegar al fin del documento recibirás como indicación el mensaje *** FIN ***.

Comando Movimiento del Puntero
m Baja el puntero una línea
m- Sube el puntero una línea
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 Busca en la línea actual texto y desplaza el puntero inmediatamente a si derecha
Comando Borrado realizado
k Borra la línea actual del puntero
k- Borra la línea anterior al puntero
e Borra un carácter a la izquierda del puntero
e- Borra un carácter a la derecha del puntero

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.

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)
Buscar y reemplazar
i/texto/ En la linea actual, Inserta una cadena texto en el puntero.
f/texto/ A partir del puntero, busca texto indicado en todo el fichero.
s/cadena Luego de usar la f/texto, puede reemplazarse con cadena

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 de Edición Avanzada

o/texto Sobreescribe la línea con la cadena texto
a Ajusta el largo
b Divide la línea en dos insertando un caracter de nueva línea en el puntero
C Cambia mayúsculas con Shift derecho
C- Cambia a minúsculas con shift izq
d/texto En la línea actual, borra la primer iteración de la cadena texto
d-/texto En la línea anterior, borra la iteración previa de texto
g/texto Inserta línea de texto luego del puntero
g- Sube una línea
I/texto Inserta texto a la derecha del puntero
I- Inserta texto a la izquierda del puntero
j Une la línea del puntero a la siguiente línea
u/texto Busca en la línea actual desde el puntero hasta la primer iteración de texto, y borra todo lo intermedio

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 _

Comandos Especiales

%a abandona la edición
%c Cerrar (guarda los cambios y sale)
%v Imprime la versión de Ecce
  • ecce.1708030849.txt.gz
  • Última modificación: 2024/02/15 21:00
  • por peron