FreeDOS EdLin

FreeDOS EdLin es un editor de texto libre orientado a lineas, que replica el uso de un editor privativo del mismo nombre. Asimismo, veras que guarda ciertas similitudes al editor ed.

EDLIN original fue programado por Tim Paterson en agosto de 1980. Al mismo tiempo de escribirlo, entro en tratativas con Seattle Computer Products para renombrar el sistema QDOS a 86-DOS 0.2. Poco despues seria adquirido por Micro-soft, quien licenciaria el uso de todo el paquete bajo la marca MS-DOS.

Compila FreeDOS Edlin

Para poder utilizar EdLin deberas por primera vez compilarlo. Ejecuta este bloque de comandos en la terminal:

mkdir ~/amd64_bin ;
cd /tmp ;
wget https://sourceforge.net/projects/freedos-edlin/files/freedos-edlin/2.23/edlin-2.23.tar.gz ;
tar xvzf edlin-2.23.tar.gz ;
cd /tmp/edlin-2.23/ ;
./configure ;
make ;
cp /tmp/edlin-2.23/edlin ~/amd64_bin ;
rm -r /tmp/edlin-2.23/

Podras ahora invocar EdLin en si mismo:

edlin fichero.txt

Uso basico

EdLin es un editor modal. Su prompt de ordenes es un caracter *, mientras que el prompt de escritura es un caracter :.

Por convencion EdLin opera con bloques de solo 11 lineas. Puedes utilizar la orden ? para ver la ayuda de comandos disponibles.

Para comenzar a agregar lineas ingresa la orden a, y al recibir su prompt :, comienza a mecanografiar tu linea. Antes de introducirla, podras borrar y reescribir caracteres. Para introducir la linea en el bufer de EdLin, presiona la tecla intro.

Para cesar el modo de insercion, introduce un . en una linea aislada y volveras al prompt de comandos *.

Para listar las ultimas 11 lineas ingresa la orden l, y para listar todas las lineas desde la primera, ingresa 1l.

Podras guardar el fichero con el comando w fichero.txt. Podras salir con el comando e.

Recuerda que en UNIX las lineas de texto no necesariamente se limitan a una cantidad de caracteres especifico, sino que equivalen a parrafos completos. Este comportamiento es diferente al clasico EdLin de MS-DOS.

Comandos de Edlin

Para realizar operaciones mas complejas debes emplear la sintaxis de comandos de EdLin.

En esta, asumiendo que los valores entre corchetes [] son opcionales,

  1. # es un numero de linea, aunque tambien puede indicarse:
  2. .=para referir a la linea actual,
  3. $=para referir la ultima linea del documento,
  4. o ya sea un numeral posicional, de tipo + o - otro numero.

Por tanto, los comandos son:

Orden Resultado
# Edita solo la linea #
a Agrega una linea a continuacion
[#],[#],#,[#]c Copiar linea/rango de lineas
[#][,#]d Borrar linea/rango de lineas
efichero.txt Guardar y salir
[#]i Inserta una linea previamente
[#][,#]l lista 11 lineas/rango de lineas
[#],[#],#m mueve el rango de lineas a una posicion de linea
[#][,#]p pagina un rango de lineas
q Salir de Edlin
[#][,#][?]rcadena1,cadena2 Reemplazar una cadena de caracteres por otra.
[#][,#][?]scadena Buscar una cadena de caracteres
[#]tfichero.txt Transferir un fichero
[#]wfichero.txt Guardar un fichero

Veamos algunos ejemplos de edicion avanzada segun estos criterios.

Editar linea unica

Para editar unicamente la decimo novena linea, en el prompt de comandos indica 19. EdLin te presentara la linea solicitada en la terminal como referencia. Al reescribirla, se reemplazara unicamente la linea numero 19 del bufer de memoria.

Insertar lineas

Para pasar al modo de insercion antes de la decimo tercer linea, en el modo de comandos introduce 13i. Mientras introduces texto, podras utilizar las secuencias de escape indicadas anteriormente.

Si deseas abandonar el modo de insercion, ingresa . en una linea aislada (si necesitas una linea que solo contenga literalmente un punto, deberias indicarlo como \.).

Luego de abandonar el modo de insercion, el puntero pasara a la linea siguiente, a no ser que la insercion se hubiese suspendido al final del bufer, en cuyo caso el puntero pasara a ser la ultima linea del bufer, naturalmente.

Listar lineas

Use [#][,#]l para listar lineas de texto en la pantalla. Si se omite el primer parametro, mostrara el texto que comienza 11 lineas antes de la linea actual.

Si se omite el segundo parametro, se mostrara una pantalla de texto que comenzara con la linea especificada en el primer parametro.

Si se omiten ambos parametros, se mostrara una pantalla de texto que comience 11 lineas antes de la linea actual.

En caso que el numero de lineas a mostrar sea mas largo que el numero de lineas de la pantalla, edlin lo consultara antes de paginar la pantalla.

Mover lineas

Para mover un bloque de texto a la linea anterior a la indicada en el tercer parametro utiliza [#],[#],#m. Funciona igual a copiar, solo que borrara el bloque original

Presentar lineas

Utiliza 12,23p para presentar el rango de lineas 11 a 23 en pantalla. Es similar al comando l ("listar") con la excepcion que los parametros por defecto comienzan en la linea actual en lugar de hacerlo con las 11 lineas posteriores.

Copiar un rango de lineas

Utiliza 9,12,33,1c para copiar un rango de lineas consecutivo a otra localizacion del bufer. En orden, los parametros son:

-La primer linea a copiar (en este caso ''9'', pero por defecto es la linea actual)
-La ultima linea a copiar (en este caso ''12'', pero por defecto es la linea actual)
-La linea anterior donde deseas insertar el rango de lineas (en este ejemplo, ''33'')
-La cantidad de iteraciones que quieres copiar el rango indicado (por defecto es ''1'' sola copia)

Una vez que copies las lineas, te conveniente usar el comando l ("listar") para ver los nuevos numeros de linea resultantes.

Borrar rango de lineas

Utilice d para borrar la linea actual.

Pero si utilizas [#][,#]d podras borrar un rango de lineas consecutivas del bufer. Los parametros son la primer linea y de la ultima linea a borrar.

Si omites el primer parametro, borraras el bloque de texto desde la linea actual hasta la linea especificada como segundo parametro (asegurese de incluir la ,).

Si omites el segundo parametro, borraras unicamente la linea especificada en el primer parametro.

Cadenas de caracteres en EdLin

Podras encerrar las cadenas de caracteres tanto en apostrofes '...'como comillas "...", o podran contener las siguientes secuencias de escape:

Cadena de Caracteres Caracter de resultado
\a Caracter de campana
\b Caracter de Retroceder (borrado)
\e Escape
\f Alimenta papel
\t Tabulador horizontal
\v Tabulador vertical
\" Comillas
\' Apostrofe
\. Punto
\\ Barra invertida
\dNNN Valor decimal, donde cada N es un digito decimal (de 0 a 9)
\xXX Valor Hexadecimal, donde cada X es un digito hexadecimal (de 0 a F, tanto en mayusculas como minusculas)
\OOO Valor octal, donde cada O es un digito cotal (de 0 a 7)
\^C Caracter de Control, tal como \^J para un caracter Control+j literal (linefeed).
Reemplazar una cadena

Utiliza [#][,#][?]r$,$ para reemplazar todas las ocurrencias de la primer cadena con la segunda cadena entre las dos lineas especificadas.

Si omite el primer parametro, reemplazara a partir de la linea posterior a la actual. Si omite el segundo parametro, dejara de reemplazar texto en la ultima linea del bufer.

Si incluye un ?, edlin mostrara un mensaje de confirmacion antes de reemplazar el texto

Busqueda de cadena

Use [#][,#][?]s$ para buscar la primer linea que contenga la subcadena especificada.

Si omite el primer parametro, comenzara a buscar desde la linea actual. Si omite el segundo parametro, dejara de buscar al llegar al final del bufer. Si incluye el ?, edlin solicitara confirmacion ante cada encuentro. Si responde "no", continuara la busqueda. Si responde "yes" finalizara la busqueda.

Si la busqueda localiza la subcadena, la linea actual sera la linea donde finalizo la busqueda.

Trabajo de Ficheros en EdLin

Transferir un fichero

Utilice [#]t fichero.txt para insertar el contenido de fichero.txt. Lo hara incorporandolo antes del numero de linea especificado. Si omites especificar un numero de linea, se insertara antes de la linea actual.

Grabar un fichero

[#]w fichero.txt graba las primeras lineas # en del fichero especificado en el disco. Si omites el numero de linea, se grabaran todas las lineas del bufer en disco.