| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
| ecce [2024/02/16 17:19] – peron | ecce [2026/04/21 16:06] (actual) – editor externo 127.0.0.1 |
|---|
| >Si bien su almacén es limitado (768 kilobytes), es suficiente para unas 350 páginas de texto aproximadamente. | >Si bien su almacén es limitado (768 kilobytes), es suficiente para unas 350 páginas de texto aproximadamente. |
| |
| ===Ejecutar Ecce=== | ====Uso de Ecce==== |
| | ===Ejecución de Ecce=== |
| Para ejecutar Ecce debes usar la siguiente sintaxis: | Si bien la sintaxis básica para editar un fichero es: |
| |
| <code bash> | <code bash> |
| ecce fichero_origen fichero_destino | ecce fichero |
| </code> | </code> |
| |
| Notarás que Ecce es tan antediluviano que es incapaz de crear un fichero de origen de forma autónoma (si este no existiese). Por lo tanto deberás recurrir a elaborar uno en blanco con [[aprende a usar la terminal#ejercicio_6crear_archivos_con_touch|touch]], indicando un fichero ''origen.txt''. Por ejemplo: | Si bien normalmente querrías utilizar un fichero de texto muleto para evitar cometer errores, notarás que Ecce es tan antediluviano que es incapaz de crear uno de forma autónoma (en caso de que este no exista ya). Por lo tanto deberás recurrir a elaborar un fichero en blanco con [[aprende a usar la terminal#ejercicio_6crear_archivos_con_touch|touch]], indicando un fichero ''origen.txt''. Por ejemplo: |
| |
| <code bash> | <code bash> |
| </code> | </code> |
| |
| Al iniciarse correctamente, Ecce presentará la memoria disponible para su almacén ("buffer"), y aguardará tus órdenes: | |
| | <code bash> |
| | ecce fichero_origen fichero_destino |
| | </code> |
| | |
| | ===Prompts de Modo=== |
| | |
| | Al iniciar, Ecce presentará en la terminal el tamaño de memoria disponible para su almacén ("buffer"), y aguardará órdenes: |
| |
| <code> | <code> |
| </code> | </code> |
| |
| Durante su operación Ecce puede mostrar uno de sus dos //prompts//, indicativos de su que definen su //modo de operación//: | Durante su operación, Ecce puede presentar alguno de sus dos //prompts// modales: |
| |
| * **//Prompt// del Modo de Comando**: ''>'' | * **//Prompt// del Modo de Comandos**: ''>'' |
| * **//Prompt// del Modo de Inserción de texto**: '':'' | * **//Prompt// del Modo de introduccción de texto**: '':'' |
| |
| ==== Edición básica ==== | ==== Mecanografiado básico ==== |
| |
| Para el uso más básico es suficiente con conocer sólo cuatro comandos de una letra. | Para mecanografiar texto de forma básica con Ecce, basta conocer sólo cuatro comandos de una letra. |
| |
| ^ **Comando** ^ **Acción** ^ | ^ **Comando** ^ **Acción** ^ |
| | ''g*'' | Agregar una líneas | | | ''g'' | Mecanografiar una línea de texto individual | |
| | '':'' | Detiene el modo de inserción | | | '':'' | Detiene el modo de inserción | |
| | ''m'' | mueve el puntero a la línea siguiente | | | ''m'' | mueve el puntero a la línea siguiente | |
| | ''p'' | Imprime la línea actual | | | ''p'' | Presentar la línea actual | |
| |
| En el //prompt// de comandos ''>'' introduce el comando ''g*'' ("agregar líneas //indefinidiamente//") y presiona la **tecla Intro**. | En el //prompt// de comandos ''>'' ordena el comando ''g'' ("mecanografiar una línea") 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//. | Comprueba que ha aparecido un **prompt de introducción de texto** en forma de un '':'' (esto indica que aguarda que escribas el texto para la línea). Mecanografía la línea de texto deseado, y al finalizarla presiona la **tecla Intro** para almacenarla en el //buffer//. |
| |
| 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// ''>''. | >En el caso de UNIX, una línea equivale a un párrafo entero; este puede tener más de los 80 o 132 caracteres tradicionales de una línea impresa en papel. |
| |
| | Si es necesario, puedes repetir la operación para agregar otra línea individual. |
| |
| > 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 ''<nowiki>*** FIN ***</nowiki>'' y volverás al prompt de comandos ''>''. | ===Mecanografiado indefinido=== |
| | Si en el prompt de comandos ''>'' en lugar de ''g'' introduces el comando ''g*'' ("mecanografiar líneas //indefinidamente//"), al presionar la **tecla Intro** Ecce permite mecanografiar líneas indefinidamente. Cada vez que presiones la tecla Intro agregará una línea adicional. Una vez que hayas almacenado todas las líneas deseadas, puedes detener el //modo de introducción de texto// mediante '':''; esto te devolverás al //prompt de comandos// ''>''. |
| |
| | Al llegar al final del documento, recibirías el mensaje ''<nowiki>*** FIN ***</nowiki>'' y volverás al prompt de comandos ''>''. |
| |
| ===Guardar y salir=== | ===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''. | Para guardar los cambios del buffer almacén en el fichero destino y cerrar el editor, desde el //prompt de comandos// ''>'', introduce el comando especial ''%c''. |
| |
| === Movimiento y corrección=== | ====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. | La edición de texto avanzada supera al de una máquina de escribir tradicional, pues a la vez de permitir mover el punter, permite realizar tareas de corrección sobre el texto. |
| |
| 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. | === Movimiento === |
| |
| Si utilizas el modificador ''*'', podrás avanzar de forma indefinida hasta llegar al final del documento (o hasta el principio, si utilizas por ejemplo ''m-*''). | Imagina a Ecce como una antigua máquina de escribir. En aquellas girabas el rodillo para avanzar o retroceder en las líneas en el papel. |
| |
| Recuerda que al llegar al fin del documento recibirás como indicación el mensaje ''<nowiki>*** FIN ***</nowiki>''. | En Ecce puedes alterar la posición actual de edición en el documento (denominada "//puntero//") utilizando los comandos de movimiento. El comando ''m'' ("mover"), por si solo avanza a la línea siguiente, pero si antepones el signo ''-'' podrás retroceder a la línea anterior. Si lo combinas con un número entero, podrás avanzar o retroceder una determinada cantidad de líneas. |
| | |
| | Si utilizas el modificador ''*'', podrás avanzar de forma //indefinida// hasta llegar al final del documento (o hasta el principio, en caso de utilizar el comando ''m-*''). |
| | |
| | Recuerda que al llegar al final del documento darás con el indicador ''<nowiki>*** FIN ***</nowiki>''. |
| |
| ==Comandos de Movimiento== | ==Comandos de Movimiento== |
| | |
| ^ **Comando** ^ **Movimiento del Puntero** ^ | ^ **Comando** ^ **Movimiento del Puntero** ^ |
| | | ''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'' | **Transporta** el puntero inmediatamente después de la cadena ''texto'' (en la línea actual) | |
| | ''m'' | Mueve el puntero a la línea siguiente | | | ''m'' | Mueve el puntero a la línea siguiente | |
| | ''m-'' | Mueve el puntero a la línea anterior | | | ''m-'' | Mueve el puntero a la línea anterior | |
| | ''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) | | |
| | ''g''[nro] | Va a la línea {nro} | | |
| | ''*'' o ''0'' | **Repetición indefinida** ("repite la acción no poder cumplir mas") | | |
| |
| ==Comandos de corrección básica== | |
| ^ **Comando** ^ **Borrado realizado** ^ | |
| | ''k'' | Borra la línea actual del puntero | | ==Comandos de corrección== |
| | ''k-'' | Borra la línea anterior al puntero | | ^ **Comando** ^ **Corrección** ^ |
| | ''e'' | Borra un carácter a la izquierda del puntero | | | ''e'' | **Borra un carácter** a la izquierda del puntero | |
| | ''e-'' | Borra un carácter a la derecha del puntero | | | ''e-'' | Borra un carácter a la derecha del puntero | |
| | ''i/texto/'' | Inserta una cadena ''texto'' tras el puntero (en la línea actual). | | | ''k'' | **Elimina la línea** del puntero | |
| | ''t/texto'' | Busca en la línea actual ''texto'' y desplaza el puntero inmediatamente a si derecha | | | ''k-'' | Elimina la línea anterior al puntero | |
| | ''o/texto'' | Sobreescribe la línea actual con la cadena ''texto'' | | | ''i/texto'' | Inserta la cadena ''texto'' a la derecha del puntero | |
| | ''d/texto'' | Borra la cadena ''texto'' (en la línea actual) | | | ''i-/texto'' | Inserta la cadena ''texto'' a la izquierda del puntero | |
| | ''u/texto'' | Borra hasta la cadena ''texto'' (en la línea actual) | | | ''g''//n// | Genera //n// líneas y permite mecanografiarlas. | |
| | | ''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 (primer iteración de la) cadena ''texto'' | |
| | | ''u/texto'' | Borra todo hasta la cadena ''texto'' (en la línea actual) | |
| |
| ==Buscar y reemplazar== | ==Buscar y reemplazar== |
| Para esta operación se utilizan dos comandos: | Para esta operación se utilizan dos comandos: |
| |
| | ''f/cadena1/'' | A partir del puntero, buscará ''cadena1'' en todo el fichero. | | | ''f/cadena1/'' | A partir del puntero, busca ''cadena1'' (hasta el fin del fichero). | |
| | ''s/cadena2'' | Tras usar f/cadena1, la reemplaza con ''cadena2'' | | | ''s/cadena2'' | Tras encontrar la cadena buscada con ''f/cadena1/'', la reemplaza con ''cadena2'' | |
| |
| ====Edición Avanzada==== | ==Modificadores== |
| 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. | * El modificador ''*'' o ''0'' significa **Repetición indefinida** (por lo que "repite la acción no poder cumplir mas"). Por ejemplo, el comando ''r*'' mueve el puntero hasta llegar al final de la línea actual. |
| | * Como regla general, al especificar un número entero //n// luego de un comando, lo ejecutarás dicho comando recursivamente //n// veces. Por ejemplo: |
| |
| 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 23 líneas (siguientes al puntero) | |
| | | ''m10'' | Baja el puntero diez líneas | |
| | ''p23'' | Imprime las 23 líneas siguientes al puntero | | | ''g5'' | Genera 5 líneas de texto en blanco debajo del 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: | De la misma manera es posible invertir el orden del comando antecediendo al número //n// con un signo ''-''. Por ejemplo: |
| |
| | | ''m-*'' | Retrocede el puntero todas las líneas (vuelve al inicio del texto) | |
| | ''p*''| Imprime todo desde el puntero hasta el final del texto | | | ''p*''| Imprime todo desde el puntero hasta el final del texto | |
| | ''p-23'' | Imprime las 23 líneas anteriores al puntero | | | ''m-10'' | Sube el puntero diez líneas | |
| | | ''p-23'' | Imprime (en orden inverso) las 23 líneas anteriores al puntero | |
| | ''p-*'' | Imprime todo hasta el inicio 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) | | |
| |
| |
| |
| | * Si sólo introduces un //número// en la línea de comandos, Ecce repetirá el comando introducido anteriormente una //n// cantidad de veces. |
| |
| Como en el caso anterior, estos pueden repetirse indicándole números apropiados: | ===Comandos Especiales=== |
| | Los comandos especiales de Ecce se utilizan para funciones |
| |
| | ''f/texto/4'' | Busca la 4ta. iteración de "texto" | | ^ **Comando especial** ^ **Resultado** ^ |
| | ''r40'' | Mueve a la derecha 40 caracteres | | | ''%c'' | Guarda los cambios y sale del editor | |
| | | ''%a'' | Abandona la edición y sale del editor | |
| | | ''%v'' | Imprime la versión de Ecce | |
| |
| Estas órdenes pueden encadenarse juntas: | ====Edición==== |
| | Junto a los comandos de corrección, Ecce dispone la posibilidad de usar comandos de edición para las líneas, que al actuar como párrafos permiten una edición más conveniente. |
| ''m23 f/texto/ p3'' | |
| |
| ===Comandos de Edición Avanzada=== | ===Comandos de Edición Avanzada=== |
| | ^ **Comando avanzado** ^ **Resultado** ^ |
| | | ''b'' | **Divide la línea** en la posición del puntero. | |
| | | ''j'' | **Une la línea** desde el puntero a la siguiente línea | |
| | ''a'' | Ajusta el largo | | | ''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 mayúsculas con Shift derecho | |
| | ''C-'' |Cambia a minúsculas con shift izq | | | ''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=== | ===Comandos Compuestos=== |
| La utilidad de estos comandos está en su repetición en bucle, condicional o incondicional. Observa estos ejemplos: | La utilidad de estos comandos está en su repetición en bucle, condicional o incondicional. Observa estos ejemplos: |
| |
| ^ Operación ^ Ejemplo ^ Significado/efecto ^ | ^ **Operación** ^ **Ejemplo** ^ Significado/efecto ^ |
| | ''0'' o ''*'' | | **Repetición indefinida** ("repite hasta no poder cumplir mas") | | | ''0'' o ''*'' | | **Repetición indefinida** ("repite hasta no poder cumplir mas") | |
| | | ''r0'' | Mueve el puntero al final de la línea | | | | ''r0'' | Mueve el puntero al final de la línea | |
| | | ''(mv'+'\)0'' | Busca la siguiente línea que comienza con `''+'' | | | | ''(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: ''"'', ''<nowiki>/</nowiki>'', ''$'', ''>'', ''+'', ''.'', '':'', ''='' y ''_'' | ====Combinación de comandos==== |
| |
| ===Comandos Especiales === | |
| | ''%a'' | abandona la edición | | Como en el caso anterior, estos pueden repetirse indicándole números apropiados: |
| | ''%c'' | Cerrar (guarda los cambios y sale) | | |
| | ''%v'' | Imprime la versión de Ecce | | | ''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'' |
| |
| |
| |
| | Podrás delimitar patrones por cualquier caracter excepto letras, dígitos, y aquellos que tienen significación definida. Podrás usar: ''"'', ''<nowiki>/</nowiki>'', ''$'', ''>'', ''+'', ''.'', '':'', ''='' y ''_''. |
| |