Professional Documents
Culture Documents
Mdulo Operador
Editor de Texto vi
Temario
Introduccin...................................................................................................................................... 4
Editor de textos vi.......................................................................................................................... 4
Modo comando............................................................................................................................ 5
Ya sabemos como entrar, como salir?....................................................................................5
Comandos bsicos de "vi"................................................................................................................6
Moviendonos por un archivo........................................................................................................6
Carcter a Carcter................................................................................................................. 6
Palabra a palabra....................................................................................................................6
Linea a linea............................................................................................................................ 6
Pantalla a pantalla................................................................................................................... 6
Scroll / Avance y retroceso de pgina.....................................................................................6
Insertando texto........................................................................................................................... 7
Aadir...................................................................................................................................... 7
Insertar.................................................................................................................................... 7
Abrir una lnea......................................................................................................................... 7
Cambiando texto..................................................................................................................... 7
Cambiar una palabra...............................................................................................................7
Cambiar una lnea................................................................................................................... 7
Cambiar parte de una lnea.....................................................................................................8
Substituir caracteres................................................................................................................8
Reemplazar un caracter.......................................................................................................... 8
Trasposicionar caracteres.......................................................................................................8
Partir/Unir lineas...................................................................................................................... 8
Deshacer cambios....................................................................................................................... 8
Deshacer el comando previo...................................................................................................8
Deshacer los cambios de una linea.........................................................................................8
Borrar texto.................................................................................................................................. 8
Borrar un caracter...................................................................................................................8
Borrar una palabra o una parte de una palabra.......................................................................9
Borrar una linea....................................................................................................................... 9
Borrar parte de una linea.........................................................................................................9
Borrar hasta el final del archivo...............................................................................................9
Borrar desde el principio del archivo.......................................................................................9
Copiar y mover texto - Yank, Delete y Put...................................................................................9
Copiar lineas........................................................................................................................... 9
Mover lineas............................................................................................................................ 9
Usar buffers con nombre........................................................................................................... 10
Usar un contador para comandos repetitivos.............................................................................10
Uso de expresiones en vi........................................................................................................10
Visualizar el numero de las lineas o no.................................................................................10
Copiar lineas......................................................................................................................... 11
Mover lineas.......................................................................................................................... 11
Borrar lineas.......................................................................................................................... 11
Buscar y reemplazar en "vi".......................................................................................................11
Encontrar un string................................................................................................................ 11
Refinar la busqueda.............................................................................................................. 12
Reemplazar un string............................................................................................................ 13
Ir a una linea determinada.....................................................................................................13
Insertar un archivo en otro.........................................................................................................13
Editar multiples archivos............................................................................................................ 14
Editar una serie de archivos......................................................................................................14
Copiar lineas entre archivos..................................................................................................14
Editar el primer archivo.....................................................................................................14
Establecer parmetros de "vi"....................................................................................................14
-3-
Introduccin
vi es el editor de texto ms utilizado en el mundo GNU/Linux.
Conocer vi nos va a resultar de mucha utilidad ya que es el editor de textos predeterminado en
este sistema operativo. Tambin podemos usar una versin grfica de este editor que se llama
gvim.
En este captulo no nos preocuparemos por el formato sencillamente... no lo tiene, lo nico que
tenemos que hacer es ocuparnos de escribir. Es muy rpido y permite insertar la salida de los
comandos directamente en el texto, as como tambin nos permite abrir archivos muy grandes
(estamos hablando de varios gigas).
Editor de textos vi
Al invocar al "vi" con el nombre de un archivo, si este no existe lo crea. En la pantalla del "vi" aparece la
posicion actual del cursor resaltada, las lineas en blanco con ~ y en la parte inferior de la pantalla
aparece la linea de estado, que muestra el nombre del archivo y el numero de caracteres que
contiene.
Existen dos modos de operacion en el "vi":
modo entrada: Se usa para aadir texto al archivo
modo comando: Se usa para introducir comandos que realizan funciones especificas del
"vi".
El modo comando es la opcin por defecto del editor vi
Puesto que "vi" no indica en que modo se trabaja en un momento determinado, distinguir entre
ambos modos es probablemente el mayor problema que causa confusion entre los nuevos
usuarios del "vi".
Cuando abres por primera vez un archivo "vi", siempre esta en modo comando, por lo que antes
de poder escribir texto en el archivo debes teclear uno de los comandos de entrada del "vi", tales
como i (insert), para insertar texto en la posicion actual del cursor, o a (append) para insertar texto
despues de la posicion actual del cursor.
Cuando se desee regresar al modo comando, basta con presionar Esc
Si en un momento determinado no se sabe en que modo se esta, simplemente pulsando Esc nos
aseguramos de que estamos en modo comando, con lo que se podra seguir con el trabajo. Si al
pulsar Esc ya se estaba en modo comando, lo unico que pasara es que se oira un pitido.
-4-
Modo comando
Cuando abres un archivo 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 ENTER para que se ejecuten. Las ordenes que empiezan
por dos puntos :, sin embargo, si lo requieren.
Las ordenes precedidas por dos puntos son realmente comandos del expresiones. "vi" y
expresiones son dos interfaces separadas del mismo programa de edicion de texto. Mientras el
"vi" es una interface orientada a la pantalla, expresiones es una interface orientada a linea. El
conjunto completo de comandos expresiones esta disponible dentro de "vi".
Cuando se edita un archivo con el "vi", los cambios no se hacen directamente sobre el archivo. En
realidad, se aplican a una copia del archivo que el "vi" crea en un espacio de memoria temporal
llamado buffer. La copia en disco del archivo 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 edicion
de un archivo y descartar todos los cambios hechos durante una sesion de edicion, dejando la
copia de disco intacta. Por otro lado, podrias perder el contenido no grabado del buffer de trabajo
si el sistema cae.
La gente que esta en terminales remotos conectados por lineas de telefono son especialmente
vulnerables para las interrupciones no planeadas.
La mejor politica es grabar tu trabajo frecuentemente, especialmente cuando haces cambios
importantes.
AVISO: Procuremos no editar un archivo con varias copias de "vi" al mismo tiempo, pues
de este modo no estaremos seguros de cual ser la copia que est realmente grabada en
el disco.
-5-
Carcter a Carcter
Si el teclado esta provisto con flechas, se pueden utilizar para mover el cursor libremente por el
texto editado hasta el momento.
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
Linea a linea
Pantalla a pantalla
documento:
Pulsando Ctrl-F se avanza una pantalla, moviendose el cursor a la esquina superior
izquierda de la nueva pantalla
Pulsando Ctrl-D se avanza media pantalla
Pulsando Ctrl-B 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 edicion.
Aadir
Insertar
Cambiando texto
Cambiar texto implica sustituir una seccion de texto por otra. "vi" tiene varios modos de hacer esto,
dependiendo de las circunstancias.
-7-
Substituir caracteres
Para substituir el caracter bajo el cursor por uno o mas caracteres, teclear s seguido del nuevo
texto y pulsar Esc cuando se acabe.
Reemplazar un caracter
Para reemplazar el caracter bajo el cursor por otro caracter, pulsar r, seguido por un unico
caracter, pues al pulsar una tecla el "vi" inmediatamente pasa a modo comando
Trasposicionar caracteres
Esto es util 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 lineas
Para partir una linea sin afectar al texto, mover el cursor al espacio donde se quiere partir la linea
y teclear r (replace) seguido de ENTER (se reemplazaria el espacio por un ENTER)
Para unir dos lineas, colocar el cursor en la linea superior y teclear J.
Deshacer cambios
Deshacer el comando previo
Pulsando u a continuacion del ultimo comando, se deshacen los cambios producidos por la
ejecucion del mismo.
Borrar texto
Borrar un caracter
Para borrar un caracter, posicionar el cursor sobre el caracter a borrar y teclear x. El comando x
tambien borra el espacio ocupado por el caracter. Para borrar el caracter anterior a la posicion del
cursor pulsar X.
-8-
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.
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
Basta con pulsar dG, que borra desde la linea en que estaba el cursor
Basta teclear d1G, que borra hasta la linea en que estaba el cursor.
Copiar lineas
Para copiar una linea son necesarios dos comandos:
yy o Y (yank) y p o P
Para copiar varias lineas basta con colocarse en la primera linea a copiar y escribir el numero de
lineas 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 lineas
copiadas o borradas se perderan.
Mover lineas
Mover una o varias lineas de sitio requiere tambien dos comandos:
-9-
dd (delete) y p o P.
Igual que antes se puede teclear antes de dd el numero de lineas a mover.
Uso de expresiones en vi
Los comandos de expresiones son mas seguros y convenientes que yank, delete y put cuando se
trata de grandes bloques de texto. Mejor que contar lineas en la pantalla y buscar el punto de
insercion, se le pueden dar a "vi" un rango de lineas a mover o copiar y entonces especificar la
linea anterior al punto de insercion (por supuesto, con un comando de borrado no existe punto de
insercion)
- 10 -
Copiar lineas
El formato basico del comando de copiar del expresiones es:
:#linea,#linea co #linea[ENTER]
donde los dos primeros numeros (separados por coma) especifican el rango de lineas a copiar, y
el tercer numero es la linea anterior al punto de insercion.
Se pueden usar abreviaturas para especificar los rangos de lineas:
. denota la linea actual.
$ denota el final del archivo.
Mover lineas
El formato basico del comando de mover del expresiones es similar al de copiar:
:#linea,#linea m #linea[ENTER]
Borrar lineas
:#linea,#linea d[ENTER]
Encontrar un string
Un string es simplemente uno o mas caracteres en fila. Puede incluir letras, numeros,
puntuaciones, caracterese 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 ENTER. 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 atras en un archivo se puede usar ? en lugar de /. En este caso, las direcciones
de n y N se invierten.
Normalmente las busquedas son case-sensitive. Si se quiere que "vi" ignore mayusculas y
minusculas (ignore case) durante la busqueda, teclear:
:set ic[ENTER]
Para volver al cambio por defecto basta teclear:
- 11 -
:set noic[ENTER]
Refinar la busqueda
Se pueden realizar busquedas mas precisas, marcando el string con indicadores de las siguientes
caracteristicas:
Principio de linea
Fin de linea
Principio de palabra
Fin de palabra
Comodines
Para buscar por el comienzo de una linea, hay que preceder al string a buscar por ^.
Por ejemplo, para buscar la siguiente linea que empieza por Sin embargo, habria que teclear:
:/^Sin embargo[ENTER]
Para buscar por el final de una linea, hay que terminar el string a buscar por un simbolo $.
Por ejemplo, para buscar la siguiente linea terminada en nada. , habria que teclear:
:/nada\.$
Para buscar por el principio de una palabra, teclear \< al principio del string, para buscar por el
final de una palabra, teclear \> al final del string.
Por ejemplo, para buscar la siguiente ocurrencia de la palabra "nada", no del string, habria que
teclear:
:/\<nada>\[ENTER]
Para buscar cualquier caracter, teclear un punto en el string en la posicion a emparejar.
Por ejemplo, para encontrar la siguiente ocurrencia de "disinformation" o misinformation,
teclear:
/.isinformation
- 12 -
Puesto que esta es una busqueda de un string, y no de una palabra, este patron de busqueda
puede tambien encontrar palabras como "misinformationalist" y "disinformationism"
Para buscar caracteres alternativos en un string, poner las alternativas entre corchetes. El patron
de busqueda /[md]string encontrara los strings que comiencen por m o d. Por otro lado, /[dm]string, encontrara strings que comiencen con cualquier letra de la d a la m.
Para buscar 0 o mas ocurrencias del ultimo caracter, 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 terminen en
"isinformation", teclear:
/[a-z]*isinformation[ENTER]
Reemplazar un string
El procedimiento para reemplazar un string esta basado en los procedimientos de busqueda
mencionados antes.
La forma basica del comando es:
:%s/string_a_buscar/string_reemplazado/g[ENTER]
Por ejemplo, para reemplazar todas las ocurrencias de desinformacion por informacion, se
teclearia:
:%s/desinformacion/informacion/g[ENTER]
Se puede modificar este comando para parar la busqueda y hacer que el "vi" pida confirmacion
antes de realizar el reemplazo, mediante la orden gc(consult)
A esta orden se le responde tecleando y (yes) o n (no).
En el ejemplo anterior seria:
:%s/desinformacion/informacion/gc[ENTER]
Para terminar el proceso bastaria con pulsar Ctrl-C
:linea# r nombre_archivo
Si no se especifica un numero de linea, "vi" inserta el archivo en la posicion actual del cursor.
Por ejemplo, si se quiere insertar el archivo prac.c en la linea 84 se escribiria:
:84 r prac\.c
- 14 -