VI EN UNIX/LINUX • Introducción • Conceptos • Comenzando con vi • Insertando texto • Borrando texto • Grabando el archivo y terminando vi • Incluyendo otros archivos • Comandos desde el prompt del sistema • Modos de trabajo en la creación del archivo INTRODUCCIÓN Unix y Linux son sistemas operativos multi-usuarios, los cuales reconocen de manera diferente los caracteres en mayúsculas y minúsculas, por ejemplo: Un archivo con el nombre de tarea1.c será totalmente diferente a un archivo llamado Tarea1.c debido a que el primer caracter de ambos archivos difiere por la mayúscula, por lo cual se deberá tener cuidado en el uso de mayúsculas y minúsculas. Un editor de texto es un programa usado para editar (es decir, crear o modificar) archivos que contienen texto, tales como una carta, un programa en Pascal, Fortran entre otros, o un archivo de configuración del sistema. Existen muchos editores disponibles para Unix y Linux, pero el único del que se estará seguro de encontrar en cualquiera de estos sistemas es vi : el "editor visual". CONCEPTOS Cuando se use vi, en cualquier momento te encontrarás en uno de los tres modos de operación: Modo de comandos Modo de inserción Modo de última línea Al iniciar vi, el editor se encuentra en modo de comandos. Este modo permite usar ciertos comandos para cambiar con los otros modos de comando o alterar el archivo. por ejemplo, pulsando la tecla "x" estando en el modo de comandos se borrará el caracter bajo el cursor. Las teclas de flechas mueven el cursor a través del archivo que se esté editando. Generalmente, los comandos usados en este modo son de uno o dos caracteres de largo, y no es necesario presionar [Enter] después de darlos, ya que su efecto es inmediato. Mientras se estés en modo de comandos, se pueden usar las teclas: h desplaza el cursor a la izquierda l desplaza el cursor a la derecha j desplaza el cursor hacia abajo k desplaza el cursor hacia arriba en ocaciones también se puede hacer uso de las flechas del teclado para moverse por todo el archivo. Desde el modo de comando se puede pasar al modo de inserción para insertar o editar texto, por lo que se debe pulsar la tecla “i” (“insert”) para insertar texto a la izquierda del cursor, existen otras teclas para insertar texto, pero por el momento es suficiente con que se recuerde ésta tecla. Mientras se esté en modo de inserción, se estará escribiendo texto y para terminar de hacerlo y volver al modo de comandos, se pulsará [esc]. Desde el modo de comandos se puede pasar al modo de última línea es un modo especial usado para dar ciertos comandos extendidos a vi, el cual se habilitará al pulsar las teclas “shift” y “:” simultaneamente. Al escribir los comandos en este modo, estos aparecerán en la última línea de la pantalla (de ahí su nombre), y para ejecutarlos se deberá presionar [Enter]. Por ejemplo, pasar al modo de última línea y escribir el comando "wq" para guardar el archivo y salir de vi, o "q!" para salir de vi sin guardar los cambios. El modo de última línea es usado generalmente para comandos que son más largos de un caracter. Más adelante se dará una lista de algunos comandos que pueden ser útiles en cada uno de los modos. COMENZANDO CON VI La mejor forma de entender estos conceptos es simplemente usando vi para editar un archivo de prueba. La sintaxis es la siguiente: $ vi archivo donde archivo es el nombre del archivo que se quiere editar. Iniciemos vi escribiendo en el prompt del sistema lo siguiente: $ vi prueba Si se observa, al final de la pantalla aparece lo siguiente: "prueba" [New File] lo cual indica que es un archivo nuevo al que se le ha puesto el nombre de prueba. En caso de editar un archivo ya existente, dicho mensaje cambiará indicando el número de líneas y el nombre del archivo. La columna con caracteres "~" indica que ya no se tienen más líneas que editar. INSERTANDO TEXTO Ahora pasemos al modo de insercción de texto pulsando la tecla i y escribamos: Esta es la primera vez que escribo con vi Espero que no sea la ultima vez que lo utilice Si se desea escribir en una línea distinta se debe presionar [Enter] al final de cada línea, y se pueden corregir los errores usando la tecla "backspace". Nota por lo general los caracteres borrados de esta manera son sustituidos por otros. Si no se desea realizar en este momento, se podrá realizar al finalizar la captura en el modo de comandos (se verá más adelante). Para finalizar el modo de edición, y volver al modo de comandos, presionar [esc] y utilizar los comandos respectivos a este modo de acuerdo a lo que se desee. Por ejemplo, desplazarse sobre el archivo, usandor las flechas para subir y bajar sobre el texto. BORRANDO TEXTO Este proceso se realizará en el modo de última línea. Por lo tanto se debe pulsar la tecla [esc], El comando x borra el caracter bajo el cursor. Si se pulsa la tecla x cuatro veces, se eliminarán cuatro caracteres. Por ejemplo colocar el cursor al inicio del texto de la primer líneay presionar 1 vez la tecla x, lo que eliminará la letra "E" del inicio del texto Para borrar la palabra en la cual se encuentra el cursor, se usará el comando dw. Por ejemplo colocar el cursor al inicio de la palabra "primera", y pulsar las teclas dw. Se pueden borrar líneas enteras usando el comando dd (es decir, pulsando la tecla [d] dos veces). Por ejemplo, estando en la primer línea del texto, presionar la tecla d 2 veces seguidas. GRABANDO EL ARCHIVO Y TERMINANDO VI Antes que nada se deberá estar en el modo de última línea, si se desea asegurar, presionar la tecla [esc], [shift] y [:] Después de ello utilizar alguno de los siguientes comandos: :q! Sale de vi sin guardar los cambios en el archivo (mantener el archivo original). :wq Guarda el archivo y sale de vi. El comando ZZ (desde el modo de comandos, sin los ":") es equivalente a :wq. :w Guarda el archivo sin salir de vi. Como ejemplo, pasar al modo de última línea ( esc shift : ) y pulsar las teclas w y enter, lo que mostrará lo siguiente en la pantalla: INCLUYENDO OTROS ARCHIVOS Estando en el modo de última línea se puede utilizar el comando :r puedes incluir el contenido de otro archivo en el actual. La sintaxis es: :r archivo_incluir COMANDOS DESDE EL PROMPT DEL SISTEMA Unix/Linux.- Generalmente los comandos se escriben con minúsculas. MAYÚSCULAS ≠ minúsculas Entrar al Sistema. login: password: (clave/nombre de usuario) (contraseña no se visualiza en pantalla). Prompt del Sistema.- $ Listar el contenido de la cuenta.$ls $ls –l muestra en 5 columnas los archivos/directorios. muestra detalles de los archivos/directorios, es decir: -rwxrwxrwx 1 dueño gpo t_bytes fecha/hr nombre d r archivo normal directorio lectura w x 1º rwx 2º rwx 3º rwx escritura executable permisos del dueño = #d permisos del grupo = #g permisos de otros usuarios = #o NOTA: La existencia del caracter dá el permiso. Modificar los permisos.- $ chmod #d#g#o archivo Visualizar el contenido de los archivos.cat pg more visualiza en forma contínua s/parar. visualiza página x página. visualiza pantalla x pantalla. Borrar archivos.- rm archivo Copiar archivos.- cp a_origen a_destino Renombrar archivos.- mv a_actual a_nuevo Imprimir un archivo.- lp archivo (exepto archivos ejecutables) NOTA: • • Los comandos anteriores aceptan uno o más nombres de archivos, siempre y cuando esten separados por un espacio. Aceptan el uso de caracteres máscara, los cuales son: * (representa una cadena de caracteres), ?(representa un solo carácter). Tipos de archivos según su extensión.• • • • • • txt c p f dat out texto lenguage c lenguage pascal lenguaje fortran datos ejecutables Nombre del archivo.- No exceder de 8 caracteres Emulación de la terminal.- $ export TERM $ TERM=vt100 Creación de Archivos.$ vi $ vi archivo.extensión Modos de Trabajo en la Creación del Archivo: Modo de Comandos.Esc Cada tecla realiza una función especial para corregir el archivo. Activa el modo de comandos en caso de no estar activado. Movimiento en la pantalla: mueve el cursor a la izquierda. ← h o backspace mueve el cursor a la derecha. → l o barra espaciadora mueve el cursor hacia arriba. ↑ k mueve el cursor hacia abajo. ↓ j mueve el cursor arriba de la pantalla. H ⌠ mueve el cursor debajo de la pantalla. L ⌡ mueve el cursor en medio de la pantalla. M ┼ mueve el cursor a la pantalla siguiente. <ctrl><f> mueve el cursor a la pantalla anterior. <ctrl><b> Correción sobre el texto: r remplaza el carácter sobre el cursor por el que se teclee después. R Remplaza a partir del cursor por lo que se teclee después hasta dar un <esc> dd Borra la línea donde esta el cursor, puede teclearse un número antes. x Borra el carácter del cursor, puede teclearse un número antes. y Almacena la línea entera en un buffer, puede ser también y y p Pone después del cursor el texto almacenado con y u Anula el último cambio realizado (undone) s Sustituye el carácter donde está el cursor por lo que se teclee hasta dar un <esc> Grabar el archivo.[esc] [shift] [z] [z] Graba y sale de vi Editor de línea.-ESC + SHIFT + : w (nombre opcional del archivo) x Guarda y sale de vi q! Sale de vi sin guardar Guarda sin salir de vi se nu Numera las líneas del archivo se nonu Quita la numeración ! comando Ejecuta un comando del shell #r archivo Agrega un archivo después de la línea indicada l_ini,l_fin co lin Copia un intervalo de líneas después de la línea indicada. l_ini,l_fin m lin Mueve un intervalo de líneas después de la línea indicada Borra el intervalo de líneas l_ini,l_fin d l_ini,l_fin s/text1/text2/g Sustitución de texto NOTA: En los comandos que solicitan límites se puede utilizar lo siguiente: $ es sinónimo de la línea final y % es la abreviatura de “1,$”, esto es todo el archivo ejemplos: :3,$ s/fjp/FJP/g :%s/lsm/LSM/g Modo de Inserción.- Insertar o agregar texto. Para habilitar este modo tecleamos cualquiera de las siguientes opciones: a Derecha del cursor A Al final de la línea actual i Izquierda del cursor I Al inicio de la línea actual o Abrir una línea debajo de la actual O Abrir una línea arriba de la actual Compilación Lenguaje C: $cc archivo.c Lenguaje Pascal: $svspascal archivo.p o $pc archvio.p Lenguaje Fortran 77: $svsf77 archivo.f o $f77 archivo.f Archvio ejecutable.- Si no existe error en la compilación se creará un archivo “a.out” que es el ejecutable, y se corre de la forma: $./a.out Donde a es el nombre del archivo. En algunos compiladores no es necesario colocar los caracteres ./ Imprimir el ejecutable.$./a.out | tee archivo.dat $lp archivo.dat (dar las entradas que pide el archivo ejecutable para crear una corrida)