You are on page 1of 11

Editor (no procesador) de texto vi

Al invocar al vi con el nombre de un fichero, si este no existe lo crea. En la pantalla del vi aparece la posicin actual del cursor resaltada, las lneas en blanco con ~ y en la parte inferior de la pantalla aparece la lnea de estado, que muestra el nombre del fichero y el numero de caracteres que contiene. Existen dos modos de operacin en el vi: modo entrada y modo comando. - Se usa el modo entrada (edicin) para aadir texto al fichero. - Se usa el modo comando para introducir comandos que realizan funciones especficas del vi. El modo por defecto es el comando. Puesto que vi no indica en qu modo se trabaja en un momento determinado, distinguir entre ambos modos es probablemente el mayor problema que causa confusin entre los nuevos usuarios del vi. Cuando abres por primera vez un fichero vi, siempre est en modo comando, por lo que antes de poder escribir texto en el fichero debes teclear uno de los comandos de entrada del vi, tales como i (insert), para insertar texto en la posicin actual del cursor, o a (append) para insertar texto despus de la posicin actual del cursor. Cuando se desee regresar al modo comando, basta con presionar Esc. Si en un momento determinado no se sabe en qu modo se est, simplemente pulsando Esc nos aseguramos de que estamos en modo comando, con lo que se podr seguir con el trabajo. Si al pulsar Esc ya se estaba en modo comando, lo nico que pasar es que se oir un pitido.

Modo comando Cuando abres un fichero con vi, estas en modo comando. En este modo puedes introducir comandos que implementan un amplio rango de funciones. Muchos de estos comandos constan de una o dos letras y un numero opcional relacionado con distintas funciones. Muchos comandos no requieren pulsar Return para que se ejecuten. Las ordenes que empiezan por dos puntos :, sin embargo, si lo requieren. Las rdenes precedidas por dos puntos son realmente comandos del ex. vi y ex son dos interfaces separadas del mismo programa de edicin de texto. Mientras el vi es una interfaz orientada a la pantalla, ex es una interfaz orientada a lnea. El conjunto completo de comandos ex est disponible dentro de vi.

Editor de texto vi (1/11)

Cuando se edita un fichero con el vi, los cambios no se hacen directamente sobre el fichero. En realidad, se aplican a una copia del fichero que el vi crea en un espacio de memoria temporal llamado buffer. La copia en disco del fichero se modifica solo cuando se graban los contenidos del buffer. Esto tiene sus ventajas y sus inconvenientes. Por un lado, significa que puedes salir de la edicin de un fichero y descartar todos los cambios hechos durante una sesin de edicin, dejando la copia de disco intacta. Por otro lado, podras perder el contenido no grabado del buffer de trabajo si el sistema cae. La gente que est en terminales remotos conectados por lneas de telfono es especialmente vulnerable para las interrupciones no planeadas. La mejor poltica es grabar tu trabajo frecuentemente, especialmente cuando haces cambios importantes. AVISO: Procurar no editar un fichero con varias copias del vi al mismo tiempo, pues de este modo no se est seguro de cul es la copia que est realmente grabada en disco. Ya sabemos cmo entrar, cmo salir? Para grabar nuestro trabajo sin salir del vi basta pulsar la secuencia: Esc :w [return] Para salir cuando no se han hecho modificaciones: Esc :q [return] Para salir cuando se han hecho modificaciones: -si se quieren descartar: Esc :q! [return] - si se quieren guardar los cambios: Esc :wq [return]

COMANDOS BASICOS DEL vi -MOVIENDOSE POR UN FICHERO Cuando arrancamos el vi, el cursor est en la esquina superior izquierda de la pantalla del vi. En modo comando, existen rdenes que nos permiten moverlo por toda la pantalla: ciertas teclas de letras, las flechas, el Return, Back space (tecla de borrar), y Space Bar (barra espaciadora). NOTA: Muchos de los comandos del vi son "case-sensitive", es decir, la misma orden tecleada en maysculas o minsculas puede tener efectos totalmente distintos. Carcter a Carcter Si el teclado est provisto con flechas, se pueden utilizar para mover el cursor libremente por el texto editado hasta el momento.
Editor de texto vi (2/11)

Si se usa el vi desde un terminal remoto, las flechas pueden no funcionar correctamente, depende del emulador de terminal. En dicho caso las teclas usadas son: . Izquierda: h o SpcBar. . Derecha: l o BckSpc. . Arriba: k. . Abajo: j. Palabra a palabra . Pulsando w (word) nos movemos una palabra hacia la derecha. . Pulsando b nos movemos una palabra hacia la izquierda. Lnea a lnea . Pulsando ^ nos movemos al comienzo de la lnea en la que est el cursor. . Pulsando $ nos movemos al final de la lnea actual. . Pulsando Return nos movemos al comienzo de la lnea siguiente. Pantalla a pantalla . Pulsando H (high) nos movemos a la parte superior de la pantalla. . Pulsando L (low) nos movemos a la parte inferior de la pantalla. . Pulsando M (middle) nos movemos a la mitad de la pantalla SCROLL y AV/RE PGINA Aunque se puede hacer scroll lnea a lnea con los comandos vistos, cuando el fichero es muy grande, y uno desea moverse del principio al final del mismo, no es demasiado viable esta opcin. Para ello existen una serie de comandos que nos permiten movernos pgina a pgina por el documento: . Pulsando Ctrl-F (scroll forward) se avanza una pantalla, movindose el cursor a la esquina superior izquierda de la nueva pantalla. . Pulsando Ctrl-D se avanza media pantalla. . Pulsando Ctrl-B (scroll backward) se retrocede una pantalla. . Pulsando Ctrl-U se retrocede media pantalla.

INSERTANDO TEXTO vi proporciona muchos comandos para insertar texto, que nos hacen pasar del modo comando al modo de edicin. Aadir . Pulsando a (append) se inserta texto a la derecha del cursor.
Editor de texto vi (3/11)

. Pulsando A se aade texto al final de la lnea en la que est el cursor. Insertar . Pulsando i (insert) se inserta texto a la izquierda del cursor. . Pulsando I se inserta texto al principio de una lnea. Abrir una lnea . Pulsando o (open) se abre una lnea debajo de la posicin actual del cursor . Pulsando O se inserta una lnea encima de la actual posicin del cursor. CAMBIANDO TEXTO Cambiar texto implica sustituir una seccin de texto por otra. vi tiene varios modos de hacer esto, dependiendo de las circunstancias. Cambiar una palabra . Para reemplazar una palabra, posicionar el cursor al principio de la palabra a ser reemplazada, teclear cw seguido de la nueva palabra. Cuando se termine de modificar se pulsara Esc . Para cambiar parte de una palabra, colocar el cursor sobre la palabra, a la derecha de la parte a cambiar, y proceder como en el caso anterior. Cambiar una lnea Para reemplazar una lnea, poner el cursor en cualquier parte de la lnea y teclear cc. La lnea desaparece, dejando una lnea en blanco para el nuevo texto, que puede ser de cualquier longitud. Pulsar Esc para acabar. Cambiar parte de una lnea Para reemplazar parte de una lnea, colocar el cursor a la derecha de la parte a modificar. Pulsar C, introducir la correccin y pulsar Esc para acabar. Substituir caracteres Para substituir el carcter bajo el cursor por uno o ms caracteres, teclear s seguido del nuevo texto y pulsar Esc cuando se acabe. Reemplazar un carcter Para reemplazar el carcter bajo el cursor por otro carcter, pulsar r, seguido por un nico carcter, pues al pulsar una tecla el vi inmediatamente pasa a modo comando Trasposicionar caracteres

Editor de texto vi (4/11)

Esto es til para fallos tales como escribir qeu en lugar de que. Colocando el cursor sobre la primera letra a mover y pulsando xp, se intercambian las posiciones de ambos caracteres. Partir/Unir lneas Para partir una lnea sin afectar al texto, mover el cursor al espacio donde se quiere partir la lnea y teclear r (replace) seguido de Return (se reemplazara el espacio por un return). Para unir dos lneas, colocar el cursor en la lnea superior y teclear J. DESHACER CAMBIOS Deshacer el comando previo Pulsando u a continuacin del ltimo comando, se deshacen los cambios producidos por la ejecucin del mismo. Deshacer los cambios de una lnea Pulsando U se deshacen todos los cambios que se han hecho sobre una lnea. Este comando funciona solo si no te has movido de la lnea. BORRAR TEXTO Borrar un carcter Para borrar un carcter, posicionar el cursor sobre el carcter a borrar y teclear x. El comando x tambin borra el espacio ocupado por el carcter. Para borrar el carcter anterior a la posicin del cursor pulsar X. Borrar una palabra o una parte de una palabra Para borrar una palabra, posicionar el cursor al principio de la palabra y pulsar dw, entonces se borrara la palabra y el espacio que esta ocupaba. Para borrar parte de una palabra, hay que colocar el cursor a la derecha de la parte a modificar, y teclear dw. Borrar una lnea Pulsando dd se borra una lnea y el espacio que esta ocupaba Borrar parte de una lnea Para borrar todo lo que este a la derecha del cursor, basta con pulsar D. Para borrar todo lo que este a la izquierda del mismo basta con pulsar d0. Borrar hasta el final del fichero
Editor de texto vi (5/11)

Basta con pulsar dG, que borra desde la lnea en que estaba el cursor. Borrar desde el principio del fichero Basta teclear d1G, que borra hasta la lnea en que estaba el cursor. COPIAR Y MOVER TEXTO- Yank, Delete y Put De la misma manera que muchos procesadores de palabra te permiten copiar y pegar, o cortar y pegar lneas de texto, el vi tambin incluye esta posibilidad, mediante los comandos "yank and put" y "delete and put", respectivamente. Copiar lneas Para copiar una lnea son necesarios dos comandos: yy o Y (yank) p (debajo) o P (arriba) Para copiar varias lneas basta con colocarse en la primera lnea a copiar y escribir el nmero de lneas a copiar seguido por yy (p.e.: 10yy) Pueden usarse los comandos p y P para pegar el texto inmediatamente antes borrado. AVISO: Usar solo los comandos de movimiento de cursor entre el yank o delete y put. Si se borra o copia cualquier otro texto antes de poner el nuevo texto en su lugar, las lneas copiadas o borradas se perdern. Mover lneas Mover una o varias lneas de sitio requiere tambin dos comandos: dd (delete) y p o P. Igual que antes se puede teclear antes de dd el nmero de lneas a mover. Usar buffers con nombre Para insertar repetidamente un grupo de lneas en varios lugares dentro de un documento, puedes copiar las lneas a un buffer con nombre. Se especifican los buffers con nombre escribiendo antes del comando comillas dobles y su nombre. Ej: copiar 4 lneas al buffer a--> "a4yy copiar 10 lneas al buffer b--> "b10yy pegar las lneas del buffer a --> "ap o "aP pegar las lneas del buffer b --> "bp o "bP Usar un contador para comandos repetitivos
Editor de texto vi (6/11)

Muchos comandos del vi pueden estar precedidos de un contador que indica cuantas veces repetir la operacin. Muchos de los anteriores permiten contadores. P.e., 3dd repite el comando de borrar una lnea 3 veces, 2dw borra dos palabras, y 4x borra 4 caracteres. Tambin se pueden usar contadores para los comandos de moverse por la pantalla, p.e., 3w o 2Ctrl-F. Pulsando un "." se repite la ltima operacin de cambio realizada. Por ejemplo si se borra una lnea, y la siguiente operacin a realizar es borrar una lnea, basta con pulsar ".". USAR LOS COMANDOS ex Los comandos de ex son ms seguros y convenientes que yank, delete y put cuando se trata de grandes bloques de texto. Mejor que contar lneas en la pantalla y buscar el punto de insercin, se le pueden dar a vi un rango de lneas a mover o copiar y entonces especificar la lnea anterior al punto de insercin. (Por supuesto, con un comando de borrado no existe punto de insercin) Visualizar el nmero de las lneas o no Para visualizar el numero de cada lnea, teclear :set nu[return] Para no visualizarlas, teclear :set nonu[return] Copiar lneas El formato bsico del comando de copiar del ex es: :#lnea,#lnea co #lnea[return] donde los dos primeros nmeros (separados por coma) especifican el rango de lneas a copiar, y el tercer numero es la lnea anterior al punto de insercin. Se pueden usar abreviaturas para especificar los rangos de lneas: - "." denota la lnea actual. - "$" denota el final del fichero. Mover lneas El formato bsico del comando de mover del ex es similar al de copiar: :#lnea,#lnea m #lnea[return]

Borrar lneas
Editor de texto vi (7/11)

:#lnea,#lnea d[return] BUSCAR Y REEMPLAZAR EN EL vi vi proporciona varios modos de encontrar un string de caracteres en el texto, as como de reemplazarlo. Encontrar un string Un string es simplemente uno o ms caracteres en fila. Puede incluir letras, nmeros, puntuaciones, caracteres especiales, espacios en blanco, tabulaciones,o retornos de carro. Un string puede ser una palabra gramatical o puede ser una parte de una palabra. Para encontrar un string, hay que teclear / seguido del string que se desea buscar, y entonces pulsar return. El vi posiciona el cursor en la siguiente ocurrencia del string. Tecleando n se va a la siguiente ocurrencia del string, y pulsando N a la anterior. Para buscar hacia atrs en un fichero se puede usar ? en lugar de /. En este caso, las direcciones de n y N se invierten. Normalmente las bsquedas son case-sensitive. Si se quiere que vi ignore maysculas y minsculas (ignore case) durante la bsqueda, teclear: :set ic[return] Para volver al cambio por defecto basta teclear: :set noic[return] Ciertos caracteres especiales(/ & ! . ^ * $ \ ?) tienen un significado especial para el proceso de bsqueda y deben especificarse de un modo especial en la bsqueda, precedindolos por la barra hacia atrs \. Por ejemplo, para buscar algo? hay que teclear: /algo\?[return] Esto es as porque estos caracteres especiales pueden usarse como comandos para la funcin de bsqueda. Refinar la bsqueda Se pueden realizar bsquedas ms precisas, marcando el string con indicadores de las siguientes caractersticas: . Principio de lnea . Fin de lnea . Principio de palabra
Editor de texto vi (8/11)

. Fin de palabra . Comodines Para intentar emparejar el comienzo de una lnea, hay que preceder al string a buscar por ^. Por ejemplo, para buscar la siguiente lnea que empieza por Sin embargo, habra que teclear: :/^Sin embargo[return] Para emparejar el final de una lnea, hay que terminar el string a buscar por un smbolo $. Por ejemplo, para buscar la siguiente lnea terminada en nada., habra que teclear: :/nada\.$ Para emparejar el principio de una palabra, teclear \< al principio del string, para emparejar el final de una palabra, teclear \> al final del string. Por ejemplo, para buscar la siguiente ocurrencia de la palabra "nada", no del string, habra que teclear: :/\<nada>\[return] Para emparejar cualquier carcter, teclear un punto en el string en la posicin a emparejar. Por ejemplo, para encontrar la siguiente ocurrencia de "disinformation" o misin formation, teclear: /.isinformation Puesto que esta es una bsqueda de un string, y no de una palabra, este patrn de bsqueda puede tambin encontrar tambin palabras como "misinformationalist" y "disinformationism" Para buscar caracteres alternativos en un string, poner las alternativas entre corchetes. El patrn de bsqueda /[md]string encontrara los strings que comiencen por m o d. Por otro lado, /[d-m]string, encontrara strings que comiencen con cualquier letra de la d a la m. Para emparejar 0 o ms ocurrencias del ltimo carcter, teclear un asterisco en el string. Se pueden combinar corchetes con asteriscos para buscar por alternativas bien definidas. Por ejemplo, para encontrar todos los strings que comiencen con una z y terminenen "isinformation", teclear: /[a-z]*isinformation[return] Reemplazar un string
Editor de texto vi (9/11)

El procedimiento para reemplazar un string est basado en los procedimientos de bsqueda mencionados antes. Todos los caracteres especiales de emparejamiento se pueden usar en una bsqueda-reemplazamiento. La forma bsica del comando es: :g/string_a_buscar/s//string_reemplazado/g[return] Por ejemplo, para reemplazar todas las ocurrencias de desinformacin por informacin, se tecleara: :g/desinformacin/s//informacin/g[return] Se puede modificar este comando para parar la bsqueda y hacer que el vi pida confirmacin antes de realizar el reemplazamiento, mediante la orden gc(consult) A esta orden se le responde tecleando y (yes) o n (no). En el ejemplo anterior seria: :g/desinformacin/s//informacin/gc[return]

Para terminar el proceso bastara con pulsar Ctrl-C Ir a una lnea determinada Para ir a la ultima lnea de un fichero abierto, se teclea G. Para ir a la lnea n del fichero, se teclea n y a continuacin G INSERTAR UN FICHERO EN OTRO vi permite insertar un fichero dentro del que se est editando. La forma general del comando es: :lnea# r nombrefichero Si no se especifica un nmero de lnea, vi inserta el fichero en la posicin actual del cursor. P.e., si se quiere insertar el fichero prac.c en la lnea 84 se escribira: :84 r prac\.c EDITAR MULTIPLES FICHEROS vi te permite editar mltiples ficheros. Para ello, se debe grabar el abierto (:w[return]), y a continuacin escribir :n nuevofich[return]. Para cambiar de un fichero a otro hay que teclear (:n #[return])

Editar una serie de ficheros


Editor de texto vi (10/11)

vi nombre1 nombre2 nombre3 vi nom* los ficheros aparecern para editar en orden alfabtico. Copiar lneas entre ficheros Para copiar lneas de un fichero a otro, hacer lo siguiente: Editar el primer fichero Salvar las lneas que se quieran con el comando yank. Sin salir del vi, editar el fichero donde se van a insertar las lneas :n nuevofich[return] Usar el comando put como siempre. ESTABLECER PARAMETROS DEL vi vi tiene muchas variables que afectan a su comportamiento y apariencia. Puedes ver una lista de estas variables con :set all[return] RECUPERACION DE UNA CAIDA Si el sistema cae, los contenidos de tu buffer estn en peligro. A menudo, puedes recuperar parte de tu trabajo re arrancando el vi del siguiente modo: vi -r nomfich donde nomfich es el fichero que estabas editando en el momento de la cada. El sistema te enviara correo despus de que el sistema arranque, diciendo que hay una recuperacin del fichero.

Editor de texto vi (11/11)

You might also like