Está en la página 1de 13

Comandos bsicos del editor de textos vi

Editor vi
vi (pronunciado ube-i) es el editor estndar de UNIX. El inters de aprender a
manejar este editor es que en cualquier mquina UNIX tendremos al menos esta
herramienta para editar ficheros. vi facilita 20 lneas en pantalla para realizar la
edicin. vi es un editor que, en un momento dado, se encuentra en uno de dos
modos bsicos de operacin: modo de comandos y modo de edicin.
El modo por defecto es el modo de comandos. En este modo no se puede
realizar la edicin del texto. vi espera al comando apropiado antes de realizar una
operacin. En general, vi volver al modo de comandos despus de ejecutar un
comando.
La ventaja de este modo de trabajar es que se pueden ejecutar comandos desde
ficheros, y los documentos pueden ser formateados o reestructurados
simplemente ejecutando comandos de vi.
Si al presionar ESC el terminal emite un pitido quiere decir que estamos en modo
de comandos.
Iniciando vi
Para comenzar a usar vi, teclear
vi nuevo_fichero
Este comando inicia el editor y, como el fichero no existe todava, lo crea para
ser editado. El editor est ahora en modo de comandos esperando por un
comando.
vi +5 nombre_fichero //Comienza la edicin en la lnea 5
vi + nombre_fichero //Comienza la edicin en la ltima lnea
Moviendo el cursor
Las siguientes teclas controlar el movimiento del cursor.
k arriba
j abajo
h izquierda
l derecha
Cuando se carga vi con un nuevo fichero, el cursor est en la esquina superior
izquierda de la pantalla, y no puede ser movido con las teclas de cursor.
Modo de entrada de texto (aadir,
insertar)
a aade texto a partir del carcter en que est situado el cursor.
A aade texto al final de la lnea actual.
i inserta texto a partir de la posicin del cursor
I inserta texto al principio de la lnea actual.
o inserta una lnea debajo de la posicin del cursor
O inserta una lnea encima de la posicin del cursor
:r fich permite insertar el fichero fich tras la lnea actual
Borrando y cambiando texto
Los tres comandos ms utilizados para alterar el texto son
x borra el carcter en el cursor
nx borra n caracteres hacia la derecha, incluido el que est sobre
el cursor.
nX borra n caracteres hacia la izquierda.
r sustituye el carcter en el cursor
dd borra la lnea en la que est el cursor
ndd borra n lneas hacia abajo incluyendo la que contiene el
cursor.
Estos tres comandos son ejecutados en el modo de comandos, y vuelven al modo
de comandos despus de ejecutarse.
Deshaciendo cambios
Hay veces que se realizan cambios y nos damos cuenta inmediatamente que
hemos cometido un error. El editor vi facilita mecanismos para deshacer acciones
de comandos previos.
El comando u deshace el comando previo.
El comando U deshace todos los cambios realizados en la lnea actual.
Guardando cambios y permaneciendo en
vi
Es muy recomendable guardar los cambios que se van realizando de una forma
regular. Para ello se utiliza
:w
Si decides que no quieres sobreescribir el fichero que ests editando, sino que
quieres guardar los cambios como un fichero nuevo, aade al comando: w el
nombre del nuevo fichero,
:w nuevo_fichero2
Abandonando vi
Para dejar vi se utiliza,
ZZ Guarda los cambios en el fichero original, y vuelve al
intrprete de comandos
:wq Igual que ZZ
:q! Abandona el editor, no guarda los cambios, y vuelve al
intrprete de comandos
Comandos adicionales para
posicionamiento del cursor
Adems de las teclas h, j, k, l existen cuatro ms:
b mueve el cursor al comienzo de la palabra anterior
e mueve el cursor al final de la palabra siguiente
0 mueve el cursor al comienzo de la lnea (cero)
$ mueve el cursor al final de la lnea

Scroll de pantalla
Los comandos para avanzar una pantalla arriba y abajo (12 lneas) son
ctrl-d una pantalla abajo
ctrl-u una pantalla arriba
Para ficheros muy largos, se puede ir a una lnea del texto
3000G va a la lnea nmero 3000
Para posicionar el curso en la ltima lnea del fichero, teclea
G
Para posicionar el cursor al comienzo del fichero, teclea
1G
El siguiente comando muestra el nmero de lnea actual
ctrl-g
Bsqueda
Otro mtodo de posicionarse dentro de un fichero es buscando una cadena de
caracteres. En el modo de comandos, cualquier cadena de caracteres precedida
por / significa el comando de bsqueda hacia adelante. El cursor se posiciona en
la primera ocurrencia de dicha cadena.
El comando n busca hacia adelante la siguiente ocurrencia.
Para buscar hacia atrs, se utiliza el comando ?
Borrar texto
Ya se vio anteriormente el comando dd para borrar la lnea actual.
El comando dw borra la palabra actual. Ntese que el comando de borrado
comienza por d, seguido por el mbito de aplicacin (d para una lnea, w para
una palabra (word en ingls)).
Quitar y poner
Cuando se borra algo, es almacenado en un buffer temporal. El contenido de este
buffer puede ser accedido y 'puesto' o pegado en cualquier sitio del texto.
Para recuperar el ltimo texto borrado, se usa el comando p
nyw guarda en la memoria intermedia n palabras contadas desde la posicin del
cursor.
y$ guarda en la memoria intermedia desde la posicin del cursor hasta el final de
la lnea.
yy guarda en la memoria intermedia la lnea entera en la que se encuentra el
cursor.
yn guarda en la memoria intermedia n+1 lneas desde la lnea actual.

























Curso Bsico de UNIX
Editor vi.
Uso bsico de vi
Modos de vi
Gua de Supervivencia
Uso avanzado de vi
Modo Comando
Modo Texto
Modo "ex" o ltima lnea
Tipos de Terminal
Preguntas y Ejercicios
Bibliografa y Referencias
Uso bsico de vi.
El editor vi es un editor de texto de pantalla completa que maneja en memoria
el texto entero de un archivo. Es el editor clsico de UNIX; est en todas las
versiones. Puede usarse en cualquier tipo de terminal con un mnimo de teclas;
esto lo hace difcil de usar hasta que uno se acostumbra.
Existe un editor vi ampliado llamado vim que contiene facilidades adicionales,
as como diversas versiones del vi original. En todos los casos, el conjunto de
comandos bsicos es el mismo.
Existen en UNIX otros editores ms potentes y verstiles, como emacs, que
provee un ambiente de trabajo completo; tambin versiones fciles de manejar
como jove o pico, o an mnimas e inmediatas como ae. En ambiente X-
Windows hay muchos editores amigables, fciles de usar y con mltiples
capacidades. No obstante, vi est en todos los UNIX, requiere pocos recursos, se
usa mucho en administracin, para programar y en situaciones de emergencia. En
casos de roturas de discos, corrupcin de sistemas de archivos, errores en el
arranque y otras catstrofes, puede ser el nico editor disponible. Como la
mayora de las configuraciones en UNIX se manejan editando archivos, disponer
de esta capacidad es esencial en la administracin de un sistema.
Modos de vi.
Existen tres modos o estados en vi:
modo comando: las teclas ejecutan acciones que permiten desplazar el
cursor, recorrer el archivo, ejecutar comandos de manejo del texto y salir
del editor. Es el modo inicial de vi.
modo texto o modo insercin: las teclas ingresan caracteres en el texto.
modo ltima lnea o ex: las teclas se usan para escribir comandos en la
ltima lnea al final de la pantalla.
Gua de supervivencia.
Con unos pocos comandos bsicos se puede ya trabajar en vi editando y
salvando un texto:
vi arch1 arranca en modo comando editando el archivo arch1
i inserta texto a la izquierda del cursor
a agrega texto a la derecha del cursor
ESC vuelve a modo comando
x borra el caracter bajo el cursor
dd borra una lnea
h o flecha izquierda mueve el cursor un caracter a la izquierda
j o flecha abajo mueve el cursor una lnea hacia abajo
k o flecha arriba mueve el cursor una lnea hacia arriba
l o flecha derecha mueve el cursor un caracter a la derecha
:w salva el archivo (graba en disco)
:q sale del editor (debe salvarse primero)
Uso avanzado de vi.
Invocacin de vi.
vi
abre la ventana de edicin sin abrir ningn archivo.
vi arch1
edita el archivo arch1 si existe; si no, lo crea.
vi arch1 arch2
edita sucesivamente los archivos arch1 y luego arch2.
vi +45 arch1
edita el archivo arch1 posicionando el cursor en la lnea 45.
vi +$ arch1
edita el archivo arch1 posicionando el cursor al final del archivo.
vi +/Habia arch1
edita el archivo arch1 en la primera ocurrencia de la palabra "Habia".
Cambio de modo.
comando a texto:
teclas de insercin i I a A o O, o

tecla de sobreescritura R.
texto a comando:
tecla ESC.
comando a ltima lnea:
teclas : / ?
ltima lnea a comando:
tecla ENTER (al finalizar el comando), o
tecla ESC (interrumpe el comando).


Confundir un modo con otro la de mayor dificultades para el manejo de vi.
Puede activarse un indicador de modo escribiendo
:set showmode
Esto hace aparecer una leyenda que indica si se est en modo comando o
insercin.
Modo Comando.
El editor vi, al igual que todo UNIX, diferencia maysculas y
minsculas. Confundir un comando en minscula digitando uno en mayscula
suele tener consecuencias catastrficas. Se aconseja evitar sistemticamente el
uso de la traba de maysculas; mantener el teclado en minsculas.
Nmeros multiplicadores.
Muchos comandos aceptan un nmero multiplicador antes del comando. La
accin es idntica a invocar el comando tantas veces como indica el
multiplicador. Ejemplos:
10j
en modo comando avanza 10 lneas;
5Y
copia 5 lneas y las retiene para luego pegar.
Ejemplos de manejo.
Los siguientes ejemplos de manejo asumen que el editor se encuentra en modo
comando.
flechas mueven el cursor (si el terminal lo permite)

h j k l mueven el cursor (igual que las flechas)
itextoESC inserta la palabra "texto" y vuelve a comando
x borra el caracter sobre el cursor
dw borra una palabra
dd borra una lnea
3dd borra las 3 lneas siguientes
u deshace ltimo cambio
ZZ graba cambios y sale de vi
:q!ENTER sale de vi sin grabar cambios
/expresinENTER busca la expresin indicada
3Y copia 3 lneas para luego pegar
:6r arch3 inserta debajo de la lne 6 el archivo arch3
Movimiento del cursor:
flechas mover en distintas direcciones

h o BS una posicin hacia la izquierda
l o SP una posicin hacia la derecha
k o - una lnea hacia arriba
j o + una lnea hacia abajo
$ fin de lnea
0 principio de lnea
1G comienzo del archivo
G fin del archivo
18G lnea nmero 18
Ctrl-G mostrar nmero de lnea actual
w comienzo de la palabra siguiente
e fin de la palabra siguiente
E fin de la palabra siguiente antes de espacio
b principio de la palabra anterior
^ primera palabra de la lnea
% hasta el parntesis que aparea
H parte superior de la pantalla
L parte inferior de la pantalla
M al medio de la pantalla
23| cursor a la columna 23
Control de pantalla.
Ctrl-f una pantalla adelante

Ctrl-b una pantalla atrs
Ctrl-l redibujar la pantalla
Ctrl-d media pantalla adelante
Ctrl-u media pantalla atrs
Ingreso en modo texto:
i insertar antes del cursor
I insertar al principio de la lnea
a insertar despus del cursor
A insertar al final de la lnea
o abrir lnea debajo de la actual
O abrir lnea encima de la actual
R sobreescribir (cambiar) texto
Borrar
x borrar caracter bajo el cursor

dd borrar lnea, queda guardada
D borrar desde cursor a fin de lnea
dw borrar desde cursor a fin de palabra
d$ borrar desde cursor a fin de lnea
d0 borrar desde cursor a principio de lnea
Copiar y pegar
Y o yy copiar lnea

P pegar antes del cursor
p pegar despus del cursor
yw copiar palabra
y$ copiar de cursor a fin de lnea
"ayy o "aY copiar lnea en buffer llamado 'a'
'a' "ayw copiar palabra en buffer llamado
"ap pegar desde buffer 'a', a la derecha del cursor
"aP pegar desde buffer 'a', a la izquierda del cursor
"bdd borrar lnea y guardar en buffer 'b'
"bdw borrar palabra y guardar en buffer 'b'
Bsqueda
/str buscar hacia adelante cadena de caracteres 'str'

?str buscar hacia atrs cadena de caracteres 'str'
n repetir ltimo comando / o ?
N repetir ltimo comando / o ? para el otro lado
fc buscar el siguiente caracter 'c' en la lnea
Fc buscar el anterior caracter 'c' en la lnea
tc ir al caracter anterior al siguiente 'c'
Tc ir al caracter posterior al precedente 'c'
; repetir el ltimo comando f, F, t, o T
, ltimo comando f, F, t, o T para el otro ladoLa cadena a buscar en
/ o ? puede ser una expresin regular.
La accin de f, F, t y T alcanza slo a la lnea actual; si el caracter buscado no
est en esa lnea el cursor no se mueve.
Reemplazo
Estos comandos admiten multiplicadores: un nmero delante del comando. Al
dar un comando de reemplazo el editor coloca un smbolo $ en donde termina
el pedido de reemplazo. El usuario escribe normalmente, sobreescribiendo,
hasta donde necesite, y sale con ESC. Estos comandos admiten multiplicadores:
3cw abre un rea de reemplazo para 3 palabras.
c reemplaza caracteres
cw reemplaza palabras
C o c$ reemplaza hasta el fin de lnea
c0 reemplaza desde el comienzo de lnea
Otros
J unir dos lneas en una

ZZ grabar cambios si los hubo y salir
u deshacer ltima accin
U deshacer todos los cambios en una lnea
Modo Texto.
BS borrar caracter hacia la izquierda

ESC pasar a modo comando
Modo ex o ltima lnea.
:q salir si no hubo cambios
:q! salir sin guardar cambios
:w guardar cambios
:w arch1 guardar cambios en archivo arch1
:wq guardar cambios y salir
:r arch2 insertar un archivo
:e arch2 editar un nuevo archivo
:e! arch2 idem sin salvar anterior
:r! comando insertar salida de comando
:shell salir al shell (vuelve con exit)
Mover
:1 mueve a lnea 1
:15 mueve a lnea 15
:$ mueve a ltima lnea
Opciones
:set cambio de opciones
:set nu mostrar nmeros de lnea
:set nonu no mostrar nmeros de lnea
:set showmode mostrar modo actual de vi
:set noshowmode no mostrar modo actual de vi
Reemplazo
La sintaxis del comando de bsqueda y reemplazo es la siguiente:
:<desde>,<hasta>s/<buscar>/<reemplazar>/g
<desde>, <hasta> indican lneas en el archivo; <buscar> y <reemplazar> son
cadenas de caracteres o expresiones regulares; / es un separador, s (sustituir)
y g (global) son letras de comando para el manejo de expresiones regulares.


:1,$s/Martes/martes/g
cambia Martes por martes en todo el archivo.
:.,5s/ayuda/&ndo/g
cambia ayuda por ayudando desde lnea actual hasta la 5a. lnea.
Tipo de terminal.
vi es independiente del tipo de terminal, pero la variable de ambiente TERM
debe estar fijada correctamente. Si no se conoce o no existe el tipo exacto de
terminal, en la mayora de los terminales remotos el tipo ansi da buenos
resultados. Para fijar el terminal en tipo ansi, digitar
TERM=ansi;export TERM
Algunos comandos, especialmente more y a veces vi, pueden no responder bien
en la terminal o el emulador que se est usando. En estos casos, puede usarse
Ctrl-L para refrescar la pantalla.

También podría gustarte