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,
#
es un numero de linea, aunque tambien puede indicarse:.
=para referir a la linea actual,$
=para referir la ultima linea del documento,- 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.