Está en la página 1de 15

Workshop

LPIC1

EditordetextosVi

CLA Carrera Linux Argentina

www.carreralinux.com.ar

Temario
Introduccin al editor vi.......................................................................................................................................4
Editor de textos vi.............................................................................................................................................4
Modo comando...............................................................................................................................................5
Ya sabemos como entrar, como salir?..................................................................................................5
Comandos bsicos de "vi".................................................................................................................................6
Movindonos 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...................................................................................................7
Insertando texto..............................................................................................................................................7
Aadir..........................................................................................................................................................7
Insertar........................................................................................................................................................7
Abrir una lnea............................................................................................................................................7
Cambiando texto.......................................................................................................................................7
Cambiar una palabra................................................................................................................................7
Cambiar una lnea.....................................................................................................................................8
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......................................................................................................................................................9
Borrar un caracter.....................................................................................................................................9
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............................................................................................................................................10
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...............................................................................................11
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.....................................................................................................................14
Insertar un archivo en otro..........................................................................................................................14
Editar multiples archivos.............................................................................................................................14
Editar una serie de archivos.......................................................................................................................14
Copiar lineas entre archivos.................................................................................................................14
Editar el primer archivo.....................................................................................................................15
Establecer parmetros de "vi"....................................................................................................................15

CLA Carrera Linux Argentina

Introduccin al editor vi
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 posicin 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 operacin 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 confusin 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 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 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.

CLA Carrera Linux Argentina

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 edicin de
un archivo 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 esta en terminales remotos conectados por lineas de telfono 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]

CLA Carrera Linux Argentina

- si se quieren guardar los cambios:


Esc :wq[ENTER]

Comandos bsicos de "vi"


Movindonos 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

CLA Carrera Linux Argentina

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

CLA Carrera Linux Argentina

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.

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 reemplazara 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.

CLA Carrera Linux Argentina

Borrar texto
Borrar un caracter
Para borrar un caracter, posicionar el cursor sobre el caracter a borrar y teclear x. El comando x
tambin borra el espacio ocupado por el caracter. Para borrar el caracter 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 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" tambin 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.
CLA Carrera Linux Argentina

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 perdern.

Mover lineas
Mover una o varias lineas de sitio requiere tambien dos comandos:
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
insercin, se le pueden dar a "vi" un rango de lineas a mover o copiar y entonces especificar la linea
anterior al punto de insercin (por supuesto, con un comando de borrado no existe punto de
insercin)

CLA Carrera Linux Argentina

10

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]

Copiar lineas
El formato bsico 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 bsico 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, as como de
reemplazarlo.

Encontrar un string
Un string es simplemente uno o mas 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
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.

CLA Carrera Linux Argentina

11

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 bsquedas son case-sensitive. Si se quiere que "vi" ignore maysculas y
minsculas (ignore case) durante la bsqueda, teclear:
:set ic[ENTER]
Para volver al cambio por defecto basta teclear:
:set noic[ENTER]
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\?[ENTER]
Esto es as porque estos caracteres especiales pueden usarse como comandos para la funcin de
bsqueda.

Refinar la busqueda
Se pueden realizar bsquedas mas precisas, marcando el string con indicadores de las siguientes
caractersticas:

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, habra que teclear:
:/^Sin embargo[ENTER]
Para buscar por el final de una linea, hay que terminar el string a buscar por un smbolo $.
Por ejemplo, para buscar la siguiente linea terminada en nada. , habra que teclear:
:/nada\.$
Para buscar por el principio de una palabra, teclear \< al principio del string, para buscar por el final
CLA Carrera Linux Argentina

12

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>\[ENTER]
Para buscar cualquier caracter, teclear un punto en el string en la posicin a emparejar.
Por ejemplo, para encontrar la siguiente ocurrencia de "disinformation" o misinformation,
teclear:
/.isinformation
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 patrn de
bsqueda /[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 bsqueda
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 bsqueda y hacer que el "vi" pida confirmacion
antes de realizar el reemplazo, mediante la orden gc(consult)

CLA Carrera Linux Argentina

13

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 bastara 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 continuacin G

Insertar un archivo en otro


"vi" permite insertar un archivo dentro del que se esta editando. La forma general del comando es:
:linea# r nombre_archivo
Si no se especifica un numero de linea, "vi" inserta el archivo en la posicin actual del cursor.
Por ejemplo, si se quiere insertar el archivo prac.c en la linea 84 se escribira:
:84 r prac\.c

Editar multiples archivos


"vi" te permite editar mltiples archivos. Para ello, se debe grabar el abierto
:w[ENTER]
y a continuacin 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 aparecern para editarse en orden alfabtico.

Copiar lineas entre archivos


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

CLA Carrera Linux Argentina

14

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 apariencia. Puedes ver una lista de
estas variables escribiendo:
:set all[ENTER]

CLA Carrera Linux Argentina

15

También podría gustarte