¿Cómo uso Ed, TECO, Vi o Emacs en Ubuntu?

¡Trabajadores!

El hombre es un animal que - ante todo - vive y se desarrolla en
sociedad. Nuestra propia condición humana nos dicta un objetivo que es
el bienestar y la felicidad, pero esta idea no es privada; sólo puede
realizarse en Comunidad.

Nuestro Movimiento esto lo ha comprendido, y lo hemos hecho meridiano en
un apotegma que reza "nadie puede realizarse en un país que no se
realiza". Nuestra majestad no es otra que la de nuestro Pueblo, y el
terreno de acción es la Nación Argentina.

Indudablemente que nuestro Movimiento, por estar formados por hombres y
mujeres, no puede hacernos pretender alcanzar una perfección divina,
sino de una que explica la teoría pero que define la práctica. Es por
ello que el éxito no caerá de un níspero: habremos de construirlo con
nuestras manos, mente y corazón enfocados en la tarea que nos hemos
impuestos. Tampoco podremos pretender el suceso de un día para otro,
toda vez que sólo la dedicación al estudio y un paulatino avance hacia
el objetivo de bienestar nos aproximará a las buenas realizaciones que
anhelamos.

Pues bien, en el campo de la informática esto representa una visión que
no debe soslayarse. Hemos imaginado un sistema libre y abierto, donde
cada uno sea capaz de aportar lo suyo en pos del bien común, y lo hemos
reflejado en sanas licencias libres.

En este será muy tonificador y beneficioso conocer cuáles fueron los
pasos realizados previamentes a la acción, a fin de poder dedicarnos a
Conducir no sólo los sistemas telemáticos de hoy, sino ser capaces de
operar los del ayer. Sólo esto nos permitirá proyectarnos en un futuro
que lograremos venturoso si hacemos de la Justicia Social la bandera que
guía nuestro camino.

No es secreto para nadie que con anterioridad a la existencia de
terminales de video, los sistemas de cómputo eran dable de operarse con
terminales teletipo. Estas terminales de comunicación se adaptaron por
utilizarse anteriormente en el sistema Télex, el cual permitía
transmitir texto codificado en el estándar ASCII o Baudot por medio de
las líneas telefónicas. Se hizo patente entonces adaptar estas
terminales teletipo para operar remotamente en computadoras mainframe
dotadas de una interfaz de acceso remoto asíncrono. Las terminales
electromecánicas estaban dotadas de un teclado bastante similar al de
una máquina de escribir, y a menudo disponían de una impresora de tipos.
A veces una perforadora adosadapermitía registrar los ingresos (e
incluso programas enteros) en una cinta de papel perforado. Una de las
aplicaciones que pudo adaptar un sistema computado fue la posibilidad de
recibir textos del teclado remoto y almacenarlo digitalmente en el banco
de memoria de la computadora.


La ventaja de un editor de textos era poder corregir los errores y poder
agregar o quitar texto del banco de memoria.

Ed

Entre los primeros editores de texto encontramos al Ed. Se trata de un
editor de texto primigenio de tipo modal y orientado a líneas - y como
tal - espartano. Carece de control de cursor direccionable pues se
maneja como una máquina de escribir. Se usa para crear, mostrar,
modificar y manipular archivos de texto en forma remota o local.

Para iniciarlo simplemente utilizamos el comando:

ed

Si se lo ejecuta con un argumento de archivo existente, copiará dicho
archivo a la memoria del editor (en la jerga, "buffer"). Por ejemplo
podremos utilizar:

ed archivo.txt


Al iniciar, ed no presenta nada en nuestra terminal. Para comenzar a
agregar una línea, podremos ingresar el comando "agregar", con:

a

(Naturalmente, seguido de la tecla Enter, a fin de enviar el comando
"agregar" la computadora remota, si es que utilizamos una).

De ahora en mas, habremos pasado al modo "ingreso", sin que ed nos
informe nada. Todas las líneas que tipeemos en la terminal se irán
agregando al buffer de memoria del mainframe que tenemos asignado,
siempre y cuando llas introduzcamos en memoria con la tecla Enter.

Como en todos los anitguos editores orientados a líneas, las
posibilidades de edición una vez que introducimos la línea en la memoria
buffer son limitadas y engorrosas, por lo cual conviene escribir con
sumo cuidado y revisar la línea antes de presionar Enter para su
introducción. Dependiendo de nuestra terminal o sistema, podremos
utilizar la tecla Retroceder, o bien Ctrl+Retroceder para borrar
caracteres que se encuentren en la terminal, pero no una vez que se
hayan enviado al sistema remoto.

Una vez que hemos terminado de ingresar el texto que necesitamos en la
memoria, podremos detener el modo de "agregado" de lineas y pasar al
modo de comandos nuevamente. Para ello debemos introducir una línea con
un "." ("punto"). Al pasar al modo comando, Ed no nos informará nada,
pero cualquier cosa que introduzcamos a continuación serán interpretados
como comandos de control.

Por ejemplo, si introducimos otra vez un punto, Ed nos devolverá la
última línea del texto almacenada en el buffer de memoria.

Debemos saber que los cambios se realizan en la memoria del equipo, y no
se almacenan en el fichero hasta que necesariamente le demos la orden w
("write" o escribir en el disco). Para ello ingresamos, por ejemplo:

w archivo.txt

..y Ed nos devolverá un número que es indicativo de la cantidad de
caracteres contenidos en el texto almacenado en disco.

Para salr del editor Ed debemos introducir el comando:

q

..y se nos devolverá al prompt de sistema. Resumiendo todo, podríamos
obtener una hoja imnpresa de teletipo con una sesión de Ed en UNIX podía
verse así:


Naturalmente Ed es antediluviano y engorroso de operar en líneas ya
escritas. En tal caso podremos movernos en las líneas de texto usando el
modo de comandos (".") e ingresando un número de línea. O bien podremos
utilizar -n o +n para indicarle al cursor subir n líneas o bajar n
líneas con respecto a la linea en la que estamos actualmente. Cuando lo
hagamos Ed nos devolverá el contenido de dicha línea , y podremos
cambiarla con el comando c ("cambiar"). Volvemos a tipear el contenido
de la línea corregida y la ingresamos con Enter. Finalmente podremos
guardar cambios con el comando w.

Debemos tener en cuenta que el comando a nos deja agregar una línea
después de la línea actual. Pero en el caso de querer agregar una línea
antes de la línea actual, debemos utilizar el comando i ("insertar").

Si deseamos borrar una línea nos movemos hacia ella de la forma que os
he explicado, y utilizamos el comando d. Si quisiéramos borrar una línea
que no es la actual, indicamos en número de línea seguido de d.

De esta forma, Ed nos permite trabajar mínimamente en un sistema que
presenta líneas de texto.

No pasó mucho tiempo para que los editores de líneas permitieran
realizar programas complejos. Esto a su vez provocó el advenimiento de
los primeros sistemas operativos de tiempo compartido y multiusuarios,
entre ellos el UNIX de Bell Labs, el TOPS-10 de la DEC, el ITS del MIT,
etcétera.


No bien los sistemas computados tuvieron la posibilidad de presentar
imágenes de video y una memoria suficiente para graficar caracteres, se
hizo evidente que seria más cómodo realizar editores que pudiesen
directamente presentar el texto en una pantalla de tubo de rayos
catódicos.

Estas videoterminales comenzaron a reemplazar a los teletipos e
impresoras mecánicas.


TECO

Uno de los primeros videoeditores para equipos DEC PDP podríamos decir
que fue Visual TECO. Se trataba de un derivado el antiguo editor TECO de
Dan Murphy de 1962, pero que diez años después permitía presentar en
video en la terminal, a su vez contaba con un set de operaciones de
macros, que consistían en órdenes preconcebidas que podían enviarse a la
máquina remota.

Al estar desarrollado para numerosos sistemas, fue influyente en toda
una tercera generación de editores derivados. La operación de TECO
requiere respetar 3 reglas, y conocer 16 comandos de operación.

REGLAS de TECO:

   Para darle ingreso los comandos se debe oprimir dos veces la tecla
   Escape (ilustrada con $ a continuación, no es el signo monetario).
   En algunos de los comandos se emplea Un solo $ para finalizar los
   argumentos de cadena ("string"). Los comandos no necesitan ser
   ejecutados de a uno por vez. Puede ingresarse una larga serie de
   comandos y luego introducir "$ $", y TECO los ejecutará en orden.
   TECO está orientado a caracteres, de modo que recuerda la posición
   del caracter en su locación actual en el fichero, llamada "puntero".
   La mayoría de los comandos muestran o cambian los contenidos del
   fichero en el puntero, o mueven el puntero a otro lugar dentro del
   fichero.

Una sesión de TECO en un sistema TOPS-20 se ve de la siguiente manera:
Comandos de TECO

1.      ERfichero$Y1    Abre el fichero para ingresar datos
2.      EWfichero$1     Abre un fichero para salida
3.      EX      Guarda y sale
4.      Ctrl+c, Ctrl+c   Sale (sin guardar)
5.      C2      Mueve el caracter hacia adelante
6.      R2      Mueve el caracter hacia atrás
7.      L3      Se mueve al comienzo de la línea siguiente
8.      Itexto$ Inserta la cadena texto
9.      J       Salta al comienzo del fichero
10.     ZJ      Salta al Final del fichero
11.     T3      Tipea desde el puntero hasta el final de la línea.
12.     V       Tipea la línea actual
13.     D2      Borra el caracter en el puntero
14.     K3      Borra la línea actual
15.     Stexto$ Busca la cadena "texto"
16.     FStexto_reemplazado$texto_original$ Sustituye la cadena texto_original por texto_reemplazado

*) Algunas versiones de TECO aceptan directamente un nombre de archivo
como argumento de línea de comandos, haciendo que 1 y 2 sean
innecesarios. Algunas versiones de TECO tiene un comando EBfichero$Y que
hace lo mismo que 1 y 2 en un solo paso.

**) Prefijo numérico: mueve/borra múltiples caracteres (un número
negativo invertirá la dirección).

***) Prefijo numérico: mueve/tipeea/borra múltiples líneas (un número
negativo inverte la dirección); (sólo T, K). Pfrefijo H: tipea/borra
todo el archivo.

TECO y sus variaciones si distinguían sobre todo por su escasísimo uso
de memoria, y su empleo normalmente asíncrono con la máquina remota.


Vi

El editor Vi creado por Bill Joy es un derivado lejano de Ed, pero es
más potente y pensado ya para su uso en terminales de video con memoria
interna (buffer incorporado). Se continúa utilizando actualmente y se lo
considera un programa liviano (si bien antiguamente no era el caso, y
consumía muchos recursos en un mainframe). Acutalmente, es muypopular su
versión modernizada, Vim. Podremos ingresando: vi La pantalla de Vi/Vim
se divide en el buffer de edición y las dos líneas inferiores que
consiste en la zona de status e ingreso de comandos. Normalmente opera
en modo revisión, por lo cual no podremos modificar ni agregar ningún
texto. Para pasar al modo de inserción de texto hemos de presionar la
tecla i o bien Insertar. Sólo entonces podremos escribir o pegar en la
Terminal el texto que querramos. Una vez que terminamos el insertado de
texto en el buffer de memoria, podremos terminar el mismo presionando la
tecla Fin.

Para pasar al modo de ingreso de comandos debemos presionar Esc, y al
hacerlo el cursor pasará a la sección inferior de la pantalla, donde
podremos escribir los comandos. Los mismos comienzan con :

Por ejemplo, para guardar los cambios en el archivo recién editado en
Vi, hemos de presionar Esc, y tipear el comando :w, que se encargará de
almacenar en disco o "escribir" ("write"). Para salir de Vi se utiliza
:q ("quit") del editor. Nos devolverá a la línea de comandos del router.
Si quisiéramos salir rápidamente sin que nos pni nos informe nada,
ingresamos :q!. Y si queremos guardar y salir, usamos :wq EMACS


Emacs es un editor de texto disponible para múltiples plataformas,
incluyendo GNU. Como Vi o Nano, Emacs es un editor de texto con
presentación en pantalla. Pero a diferencia de Vi, Emacs no es un editor
con modo de inserción, lo que significa que cualquier carácter que
ingresemos en Emacs se insertará automáticamente en el archivo, a no ser
que incluya un prefijo de Comando.

Los comandos en Emacs son caracteres de control (realizados mientras
presionamos la tecla Ctrl mientras tipeamos otro caracters) o en
prefijos por un conjunto de caracters reservados Esc o Ctrl+x. Podremos
tipear tecla Esc directamente (porque realmente es un carácter) y luego
seguida por otro carácter. La tecla Ctrl debe mantenerse presionada
mientras tipeamos el otro caracter.

Otra distinción entre Emacs y Vi consiste en que emacs es capaz de
editar varios archivos a la vez. La ventana de Emacs puede dividirse en
varias ventanas, cada una de las cuales contendrá una vista en el buffer
de memoria. Cada buffer de memoria corresponde normalmente a un archivo
diferente. Es por ello que muchos de los comandos listados a
continuación se empleaan para leer ficheros y cargarlos en nuevos
buffers, así como mover distinto contenido entre buffers diferentes .

Para cargar un archivo en Emacs podríamos utilizar:

emacs archivo

Si el archivo ya existe, se nos presentará entonces la primera página
del texto en pantalla.

La manera más sencilla de aprender emacs es comenzarlo e ir avanzando en
el completo tutorial en línea que incluye para esto presionamos Esc para
ir al modo de comandos, e ingresamos help-with-tutorial. Comandos de

Ayuda * Ctr+h help-command: Muestra el primer caracter en montones de
archivos de ayuda * Ctrl+h t help-with-tutorial: Comando que ejecuta el
tutorial de Emacs
       Ctrl+h i        information: describes most of the emacs commands in man style pages
       Ctr+h k         describe-key: tells you what a particular key stroke does
*       Ctrl+h a        command-apropos: prompts for a string and
 then searches for all emacs commands that contains that string
       Esc ?   also does command-apropos
*       Ctrl+h ?        help-for-help: Describe como usar las ayudas.
Manejo de archivos y comandos de guardado
*       Ctrl+x Ctrl+f   Buscar Archivo: primero solicita un nombre de archivo, y luego carga el fichero en un buffer de edición del mismo nombre
*       Ctrk+x Ctrl+s   Guardar: almacena el buffer en el disco con un nombre asociado
       Ctrl+x Ctrl+w   Guardar como: Solicita un nuevo nombre de archivo y escribe el buffer en él

Comandos de Movimiento del Cursor o de la pantalla

Emacs operaba en antiguos sistemas UNIX, cuyas terminales iniciales
(como la venerable DEC VT100) carecían de teclas de control asociadas a
los teclados hoy en boga. Normalmente utilizamos las funciones actuales
de las flechas de cursor y las de movimiento del mismo y paginado, pero
en Emacs podremos contar también con las equivalencias de los antiguos
movimientos.

Dependiendo de la terminal, algunos de los movimientos pueden realizarse
con las flechas del cursor.

*       Ctrl+a  Mueve el cursor al Inicio de la línea
       Ctrl+e  Mueve el cursor al Fin de la línea
*       Ctrl+f  Mueve el cursor hacia adelante un caracter
*       Ctrl+b  Mueve el cursor hacia atrás un caracter.
*       Ctrl+n  Mueve el cursor a línea a continuación
*       Ctrl+p  Mueve el cursor a la línea previa
       Ctrl+v  Avanza pantalla
       Esc+v   Retrocede pantalla
*       Esc+<;  Va al inicio del buffer
*       Esc+>;  Va al final del Buffer
       Esc+f   Avanza el cursor una palabra
       Esc+b   Retrocede el cursor una palabra
Comandos para Copiar y BorrarCopy and Delete Commands
       Ctrl+d  delete-char: Borra el caracter debajo del cursor ("Supr")
       Esc+d d         delete-word: Borra desde el cursor hasta el final de la palabra inmediatamente por delante del cursor
*       Cttl+k  kill-line: Elimina la línea actual
*       Ctrl+@  set-mark-command: Marca el comienzo de un área de texto a ser operada
*       Ctrl+w  kill-region: Borra el área de texto entre la marca y la posición actual del cursor.
*       Ctrl+y  yank: inserta en la posición actual del cursor actual o en la localización más recientemente borrada
       Esc+w   copy-region-as-kill: Copia un área entre la marca y el cursor al buffer de borrado, de modo que pueda ser colocado en otro lado.
Comandos de Búsqueda
*       Ctrl+s  isearch-forward: Pide una cadena de texto y luego la busca desde la posición del cursor hacia adelante
       Ctrl+r  isearch-backwardSimilar al anterior, isearch-forward, pero busca la cadena en sentido inverso:
       Esc+%   query-replace: Pregunta una cadena de búsqueda y una cadena para reemplazarla
Comandos de Ventana y Buffer
       Ctrl+x 0        zero-window: Borra la ventana actual
       Ctrl+x 2        double-window: divide la ventana actual en dos partees, permitiendo editar en dos localizaciones diferentes de un mismo archivo, o permitiendo ver dos ficheros distintos a la vez
       C-x b   switch-to-buffer: Presenta un buffer distinto en pantalla
       C-x o   other-window: Mueve el cursor a la otra ventana (asumiendo que existan dos ventanas o buffers abiertos a la vez
*       C-x C-b         list-buffers: lista los buffers cargados en memoria
Salir de Emax, corregir errores y otros
*       Ctrl+x, Ctrl+c  save-buffers-kill-emacs: Cuando termina la edición, guarda los buffers editados pero no guardados y vuelve al Shell.
*       Ctrl+g  keyboard-quit: Si mientras tipeaba un comando cometemos un error, esto aborta el comando en progreso.
       Ctrl+u  universal-argument: Si desea repetir un comando varias veces ingrese este comando,
     ...seguido de un nro. (para la cantidad de veces)     ...seguido de un comando que desea repetir
*       Ctrl+x u        undo: deshace el último comando ingresado, en caso de haber cometido un error.
*       Esc+x   execute-extended-command: pregunta el nombre de un comando de emacs;;

Le permite ejecutar un comando, si conocer cómo se llama. pero no puede recordar su atajo.