Vous êtes sur la page 1sur 14

Linux Experts

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.

Ya sabemos como entrar, como salir?


Para grabar nuestro trabajo sin salir del "vi" basta pulsar la secuencia:
Esc :w[ENTER]
Para salir cuando no se han hecho modificaciones:
Esc :q[ENTER]
Para salir cuando se han hecho modificaciones:
-si se quieren descartar:
Esc :q![ENTER]
- si se quieren guardar los cambios:
Esc :wq[ENTER]

-5-

Comandos bsicos de "vi"


Moviendonos por un archivo
Cuando arrancamos el "vi", el cursor esta en la esquina superior izquierda de la pantalla del "vi".
En modo comando, existen ordenes que nos permiten moverlo por toda la pantalla: ciertas teclas
de letras, las flechas, el ENTER, Back space (tecla de borrar), y Space Bar (barra espaciadora).
NOTA: Los comandos del "vi" son "case-sensitive", es decir, la misma orden tecleada en
mayusculas o minusculas puede tener efectos totalmente distintos.

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

Pulsando w nos movemos una palabra hacia la derecha


Pulsando b nos movemos una palabra hacia la izquierda

Linea a linea

Pulsando ^ nos movemos al comienzo de la linea en la que esta el cursor


Pulsando $ nos movemos al final de la linea actual
Pulsando ENTER nos movemos al comienzo de la linea siguiente

Pantalla a pantalla

Pulsando H nos movemos a la parte superior de la pantalla


Pulsando L nos movemos a la parte inferior de la pantalla
Pulsando M nos movemos a la mitad de la pantalla

Scroll / Avance y retroceso de pgina


Aunque se puede hacer scroll linea a linea con los comandos vistos, cuando el archivo es muy
grande, y uno desea moverse del principio al final del mismo, no es demasiado viable esta opcion.
Para ello existen una serie de comandos que nos permiten movernos pagina a pagina por el
-6-

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

Pulsando a se inserta texto a la derecha del cursor


Pulsando A se aade texto al final de la linea en la que esta el cursor.

Insertar

Pulsando i se inserta texto a la izquierda del cursor.


Pulsando I se inserta texto al principio de una linea.

Abrir una lnea

Pulsando o se abre una linea debajo de la posicion actual del cursor


Pulsando O se inserta una linea encima de la actual posicion del cursor.

Cambiando texto
Cambiar texto implica sustituir una seccion 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 linea, poner el cursor en cualquier parte de la linea y teclear cc. La linea
desaparece, dejando una linea en blanco para el nuevo texto, que puede ser de cualquier
longitud. Pulsar Esc para acabar.

-7-

Cambiar parte de una lnea


Para reemplazar parte de una linea, colocar el cursor a la derecha de la parte a modificar. Pulsar
C, introducir la correccion y pulsar Esc para acabar.

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.

Deshacer los cambios de una linea


Pulsando U se deshacen todos los cambios que se han hecho sobre una linea. Este comando
funciona solo si no te has movido de la linea.

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-

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 linea


Pulsando dd se borra una linea y el espacio que esta ocupaba

Borrar parte de una linea

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 archivo

Basta con pulsar dG, que borra desde la linea en que estaba el cursor

Borrar desde el principio del archivo

Basta teclear d1G, que borra hasta la linea 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 lineas de texto, el "vi" tambien incluye esta posibilidad, mediante los comandos "yank and
put" y "delete and put", respectivamente.

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.

Usar buffers con nombre


Para insertar repetidamente un grupo de lineas en varios lugares dentro de un documento, puedes
copiar las lineas a un buffer con nombre. Se especifican los buffers con nombre escribiendo antes
del comando comillas dobles y su nombre.
Ejemplo:
copiar 4 lineas al buffer a--> "a4yy
copiar 10 lineas al buffer b--> "b10yy
pegar las lineas del buffer a --> "ap o "aP
pegar las lineas del buffer b --> "bp o "bP

Usar un contador para comandos repetitivos


Muchos comandos del "vi" pueden estar precedidos de un contador que indica cuantas veces
repetir la operacion.
Muchos de los anteriores permiten contadores. Por ejemplo, 3dd repite el comando de borrar una
linea 3 veces, 2dw borra dos palabras, y 4x borra 4 caracteres.
Tambien se pueden usar contadores para los comandos de moverse por la pantalla, p.e., 3w o
2Ctrl-F.
Pulsando un "." se repite la ultima operacion de cambio realizada. Por ejemplo si se borra una
linea, y la siguiente operacion a realizar es borrar una linea, basta con pulsar "."

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)

Visualizar el numero de las lineas o no


Para visualizar el numero de cada linea, teclear
:set nu[ENTER]
Para no visualizarlas, teclear
:set nonu[ENTER]

- 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]

Buscar y reemplazar en "vi"


"vi" proporciona varios modos de encontrar un string de caracteres en el texto, asi como de
reemplazarlo.

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]

Ciertos caracteres especiales(/ & ! . ^ * $ \ ?) tienen un significado especial para el proceso de


busqueda y deben especificarse de un modo especial en la busqueda, precediendolos por la barra
hacia atras \.
Por ejemplo, para buscar algo? hay que teclear:
/algo\?[ENTER]
Esto es asi porque estos caracteres especiales pueden usarse como comandos para la funcion de
busqueda.

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

Ir a una linea determinada

Para ir a la ultima linea de un archivo abierto, se teclea G


Para ir a la linea n del archivo, se teclea n y a continuacion G

Insertar un archivo en otro


"vi" permite insertar un archivo dentro del que se esta editando. La forma general del comando es:
- 13 -

: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

Editar multiples archivos


"vi" te permite editar multiples archivos. Para ello, se debe grabar el abierto
:w[ENTER]
y a continuacion escribir
:n nuevo_archivo[ENTER]
Para cambiar de un archivo a otro hay que teclear
:n #[ENTER]

Editar una serie de archivos


"vi" nombre1 nombre2 nombre3
"vi" nom*

los archivos apareceran para editarse en orden alfabetico.

Copiar lineas entre archivos


Para copiar lineas de un archivo a otro, hacer lo siguiente:

Editar el primer archivo


Salvar las lineas que se quieran con el comando yank.
Sin salir del "vi", editar el archivo donde se van a insertar las lineas
:n nuevofich[ENTER]
Usar el comando put como siempre.

Establecer parmetros de "vi"


"vi" tiene muchas variables que afectan a su comportamiento y aparencia. Puedes ver una lista de
estas variables escribiendo:
:set all[ENTER]

- 14 -

Vous aimerez peut-être aussi