ecce

¡Esta es una revisión vieja del documento!


Ecce (Editor de Contexto Compatible de Edimburgo) es un editor de texto de culto escrito en la década de 1960 para las terminales teletipo de la minicomputadora PDP-10.

El original fue escrito en lenguaje BCPL por Hamish Dewar, y ha sido reescrito en 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.

Compila Ecce

Ecce no está disponible en texto-plano, pero podrás compilar el código fuente de ecce.c para generarlo y usarlo aquí. Hazlo con:

cc -o ecce -DWANT_UTF8 ecce.c

Ejecuta Ecce

La sintaxis de ejecución de Ecce es:

./ecce fichero_origen fichero_destino

Ecce es tan antediluviano ni siquiera es capaz de crear por si mismo un fichero de destino. Debes hacerlo con el comando touch, y opcionalmente indica un fichero origen.txt. Por ejemplo:

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

Al iniciarse correctamente, Ecce te presentará la memoria disponible para su uso y quedará a la espera de tus órdenes.

Buffer space = 768 KBytes
Ecce
>

Si bien no es ilimitado, Ecce cuenta con memoria suficiente para unas 500 páginas de texto, y puede mostrar uno de los dos prompts que definen su modo de operación:

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

Para el uso más básico son suficientes sólo tres comandos de una letra.

Comando Acción
g Crea una sola línea nueva
m Desciende una línea
p Imprime la línea actual

En el prompt de comandos > introduce el comando g0 (“agregar líneas concurrentemente”) y presiona la tecla Intro. Al usar este comando Ecce conmutará al modo de inserción, y recibirás un prompt de inserción texto en forma de :.

En el prompt : mecanografía las líneas de texto deseadas. Al presionar la tecla Intro, introducirás dicha línea al buffer de memoria que forma el documento de entrada de Ecce, y se creará una nueva línea. Continúa agregando mas líneas en blanco de forma concurrente, presionando la tecla Intro.

Si en lugar de g0 indicas el comando g, se generaría una única línea en blanco, tras lo cual, al introducirle texto, recibirías el mensaje FIN si no existen otras líneas.

Una vez que hayas finalizado la inserción de texto desde el prompt de inserción de texto, retorna al modo de comandos, ingresando :.

En consecuencia volverás al prompt de comandos >.

Guardar y salir

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

Movimiento y corrección

Imagina a Ecce como una antigua máquina de escribir. Podrás desplazar la posición actual de edición en el documento (llamada “puntero”).

m Baja el puntero una línea
m- Sube el puntero una línea
k Borra la línea actual del puntero
k- Borra la línea anterior del puntero
r Se mueve a la derecha un carácter en la línea actual
l Se mueve a la izquierda un carácter en la línea actual
e Borra un carácter en la línea actual

Además de los comandos de una letra simple, Ecce dispone la posibilidad de usar opciones más avanzadas que te permiten editar con mayor potencia. 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 Asciende 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 órden del comando antecediendo al número n con un signo -. Por ejemplo:

p-23 Imprime las 23 líneas anteriores al puntero
p* Imprime todo hasta el final del texto
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/ Inserta una cadena “texto” aquí en la línea.
f/texto/ Busca “texto” indicado.

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

A Ajusta el largo
B Divide la línea en dos en el puntero
C Cambia mayúsculas con Shift derecho
C- Cambia a minúsculas con shift izq
D/texto Borra primer ocasión de texto
D-/texto Borra iteración previa de texto
E Borra caracter a la derecha del puntero
E- Borra caracter a la izquierda del puntero
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 siguiente línea
O/texto Sobreescribe la línea con la cadena texto

Comandos Compuestos

Puedes encerrar secuencias de comandos entre paréntesis () para formar comandos compuestos.

Estos comandos pueden repetirse, condicional o incondicionalmente.

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 `+

Una línea de comandos que consiste solamente un número repetirá la línea de comandos previo la cantidad de veces especificada.

Podrás delimitar patrones por cualquier caracter excepto letras, dígitos, y aquellos que tienen significancia 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.1687536465.txt.gz
  • Última modificación: 2023/06/23 16:07
  • por peron