Este trabajo es una introducci�n al editor
vi, lo llamamos introducci�n ya que para conocer completamente el
vi necesitariamos muchos a�os de pr�ctica y estudio. La orientaci�n
de este trabajo es que despues de leerla, tenga un adecuado conocimiento
de las operaciones mas simples que realiza el editor vi.
La mayor parte de este documento se basa en ejemplos
de comandos que se pueden emplear en el uso del editor y en algunos casos
se emplean palabras en ingl�s o castellanizadas para su mejor comprensi�n,
como por ejemplo: seteo.
Cuando realice los ejercicios ingrese el texto
exactamente como aparece con algunas excepciones: el texto en italica significa
que se debe sustituir el texto (como por ejemplo un nombre de archivo).
Los comandos de vi son sensibles
a las may�sculas o min�sculas, lo cual significa que las
letras may�sculas y min�sculas no son el mismo comando. Por
ejemplo, j (jota min�scula) mueve el cursor hacia abajo, pero J
(jota may�scula) combina dos l�neas en una sola .
La palabra RETURN representa la
acci�n de presionar la tecla RETURN o ENTER . ESC indica presionar
la tecla ESCAPE . Tambi�n , algunas veces ver� combinaciones
de teclas tales como CTRL-F. CTRL-F significa que debe mantener presionada
la tecla CONTROL or CTRL, y presionar F. La tecla CTRL trabaja de manera
similar a la tecla SHIFT.
Informaci�n
General
Acerca
de Vi
vi (pronunciado algunas veces como
vee-eye, es una abreviatura de "visual") provee capacidad de edici�n
de texto b�sicas. Hay tres aspectos de vi que lo hacen atractivo.
Primero, vi es proporcionado con todos los sistemas UNIX . Ud. puede usar
vi en cualquier lugar donde exista un sistema operativo Unix , ya sea en
otras universidades o en otras empresas. Segundo, vi usa una peque�a
cantidad de memoria, lo cual permite una operaci�n eficiente cuando
la red est� muy ocupada. Tercero, porque vi usa teclas alfanum�ricas
standares para los comandos, usted puede usarlo en alguna terminal virtual
o una estaci�n de trabajo sin tener que preocuparse por mapeos de
teclas inusuales.
Una
breve Sesi�n vi
Arrancando
vi
Para arrancar vi ingrese el siguiente
comando:
# vi
nombre_archivo RETURN
Donde nombre_archivo es el nombre
del archivo que Ud. desea editar. Si el archivo no existe , vi lo crear�.
Tambi�n puede arrancar vi sin dar un nombre_archivo. En este caso
, vi le pedir� un nombre cuando termine o grabe su trabajo.
Ejercicio 1: Arranque vi
preparando para un ejercicio tutorial; en todo este documento , los ejercicios
usar�n el archivo , ejemplo. Entonces en una terminal tipee lo siguiente:
#vi ejemplo RETURN
Limpia la ventana y muestra el contenido
del archivo, ejemplo. Dado que este es un nuevo archivo, no contiene ning�n
texto. vi usa el caracter (~) para indicar lineas en la pantalla m�s
all� del final el archivo.
vi usa el cursor para indicar donde
su pr�ximo comando o inserci�n de texto tomar� efecto.
Al pie de la ventana, vi mantiene
una l�nea de estado, llamada l�nea de modo.Esta l�nea
muestra la l�nea corriente del archivo, el nombre_archivo, y el
estado.
Ejercicio 2: Cuando comienza
la edici�n del archivo, chequee la linea de estado. En ella leer�
lo siguiente:
"ejemplo"
[New file]
Modo
Comando y Modo Inserci�n
vi tiene dos modos, modo comando
y modo inserci�n. En el modo comando, los caracteres que ud. tipee
realizan funciones tales como movimiento del cursor, cortar o copiar texto,
o buscar por algun texto particular. En el modo inserci�n, se tipea
para insertar o sobreescribir texto. Cuando arranca vi lo hace por defecto
en modo comando.
Para cambiar desde modo comando
a modo inserci�n, presione la tecla "i" (no es necesario presionar
RETURN). vi le permite insertar texto comenzando desde la ubicaci�n
corriente del cursor. Para volver a cambiar a modo comando, presione la
tecla ESC. Puede tambi�n usar ESC para cancelar un comando incompleto
en el modo comando.
Desafortunadamente, vi normalmente
no indica en que modo se encuentra . En el pr�ximo ejercicio debe
cambiar el indicador de modo. Si est� inseguro acerca del corriente
modo, puede presionar ESC unas cuantas veces para asegurarse que cambi�
el modo. Cuando vi hace sonar el beep, sigtnifica que se ha retornado al
modo comando.
Ejercicio 3: Antes de comenzar
a tipear el texto, se activa el indicador de linea de modo . Puede ser
que no se requiera usarlo , pero esta le avisar� si est�
en modo comando o en modo inserci�n. Tipee lo siguiente:
:set showmode RETURN
Nada parece haber cambiado. Cuando
se encuentra en modo comando, no hay indicador, pero si entra en modo inserci�n
, le aparecer� el modo en la esquina inferior derecha de la pantalla.
.
Insertando
Texto
Mientras est� en modo inserci�n,
puede ingresar texto normalmente. vi reconoce unas cuantas combinaciones
de teclas especiales cuando las tipea.
TABLA 1. Comandos para
Insertar Texto
Backspace
Borra el car�cter previo
Delete
Borra el car�cter corriente
CTRL-W
Borra la palabra previa
CTRL-U
Borra la linea actual
RETURN
Comienza una linea nueva
Ejercicio 4: Para entrar
en modo inserci�n, presione:
i
Note que en la esquina inferior derecha, vi indica
que est� en modo inserci�n. Entonces ingrese el siguiente
texto, y recuerde presionar RETURN al final de cada l�nea. Puede
usar las combinaciones de teclas especiales si comete un error.
Nos mezclamos para golpear el
campo. El agua choca bajo nuestro, demasiado lejos lentamente en pies y
manos.
Nuestros refugios se oscurecen desagradablemente.El eco del trueno
sacude las nubes, aun el suelo retumba cada vez que se sacude.
Echamos una mirada hacia atr�s, surcamos un oc�ano
creciente detr�s nuestro.
Justamente no parar� de llover.
Nuestras tiendas deterioradas
fueron un pobre refugio esta noche. Cae un rayo destellante sobre la colina,
fabricamos una peque�a caberna en la ladera de la monta�a.
Un refugio seguro, pienso.
Nuestro refugio se destrona,
pero se levanta hacia delante poniendose seguro.
Despu�s de ingresar este
texto, presione ESC para volver al modo comando. Note que la linea de modo
se limpia.
Movimiento
del Cursor
Ud.necesitar� mover el cursor en todo el
archivo. Puede mover el cursor en modo comando. vi tiene algunos comandos
diferentes para mover el cursor. Las cuatro teclas b�sicas aparecen
mas adelante. Puede tambi�n usar la tecla backspace y barra espaciadora
para mover a izquierda y derecha, respectivamente.
k
mueve
una l�nea arriba (similar a la tecla �)
h
mueve
un car�cter a la izquierda sobre la linea (similar a la tecla �)
l
mueve
un car�cter a la derecha sobre la linea (similar a la tecla �)
j
mueve
una l�nea abajo (similar a la tecla �)
Una tabla de comandos de movimientos
adicional aparece mas abajo. Note que vi tiene sus propias definiciones
de sentencias y p�rrafos, asi comprender como vi los reconoce es
aprovecharlo.
sentencia
Una
sentencia son todos los caracteres entre signos tales como: punto (.),
signo de pregunta (?), y exclamacion (!). Una linea en blanco tambi�n
finaliza una sentencia.
l�nea
El
texto entre dos caracteres RETURN forma una linea. Por ello es que es posible
tener lineas las cuales son mas anchas que el tama�o de la pantalla.
p�rrafo
Un
p�rrafo es una secuencia de lineas las cuales no est�n por
una l�nea en blanco. De esa manera, el documento ejemplo del ejercicio
anterior tiene cuatro p�rrafos.
TABLA 2. Comandos de Movimientos
del Cursor
Comando
Mueve el Cursor a
b
Comienzo de la palabra previa
w
Comienzo de la pr�xima palabra
e
final de la corriente/pr�xima palabra
0
(cero) o ^ comienzo de la l�nea
$
fin de la l�nea
(
comienzo de la corriente/previa sentencia
)
comienzo de la pr�xima sentencia
{
Comienzo del corriente/previo p�rrafo
}
fin del corriente p�rrafo
H
linea del tope de pantalla
M
liena del medio de la pantalla
L
ultima l�nea de la pantalla
Borrando
Texto
En algunos casos es necesario borrar el texto
editado. Para hacer esto, primero mueva el cursor tal que este cubra el
primer car�cter del grupo que desea borrar, entonces tipee el comando
deseado de la tabla siguiente.
TABLA 3. Comandos de Borrado
Comando
Funci�n
x
borra solo el car�cter actual
D
borra hasta el final de la linea
db
borra desde el car�cter actual hasta el comienzo
de
la palabra actual
de
borra desde el car�cter actual hasta el final
de
la palabra actual
dd
borra la linea corriente
dw
borra desde el car�cter actual hasta el comienzo
de
la pr�xima palabra
Note que la segunda letra del comando
especifica la misma porci�n de texto que hace el comando de movimiento
del cursor. De hecho, puede usar el borrado con todos los movimientos del
cursor especificados en la tabla 2 (ej. dH borrar� desde la linea
de tope de la pantalla) para borrar la porci�n de texto deseada
. Tambi�n , D es equivalente a d$.
Ejercicio 5: Ponga
el cursor en la palabra manos
con las teclas de movimiento del cursor. Mueva el cursor a la letra "s."
Presione x para borrarla.
Ahora borre la palabra sacude.
Vaya al comienzo de la palabra. Aunque presionara x siete veces para borrar
la palabra, esto se puede hacer rapidamente tipeando dw (delete
word)
Finalmente, remueva la linea Justamente
no parar� de llover Mueva el cursor
en cualquier parte de la l�nea, y tipee dd. La l�nea
desaparece.
Haciendo
Correcciones
En algunos otros casos solo necesitar�
cambiar un simple car�cter o palabra, m�s que borrarlos vi
tiene funciones de cambio y reemplazo tambi�n. Primero moverse a
la posici�n donde el cambio debe comenzar (la linea o palabra deseada).
Despues tipee el comando apropiado de la tabla siguiente. Finalmente, ingrese
el texto correcto, usualmente concluya con ESC (excepto para r).
TABLA 4. Commandos de
Correcci�n/Reemplazo
Comando
Acci�n
cw
abrev.(Change word)vi muestra el signo $
marcando
el fin de la porci�n de cambio.
C
sobreescribe hasta el fin de la linea.
r
Reemplaza un car�cter simple con otro.
no
es necesario presionar ESC.
R
sobreescribe caracteres comenzando desde la
la
posicion actual del cursor.
s
Sustituye uno o m�s caracteres por un simple
caracter.
S
Sustituye la corriente linea con una nueva.
El comando cambio c trabaja
de la misma manera que el comando borrado; puede usar la porci�n
de texto especificada listada en la Tabla 2 (ej. dH borrar� desde
la linea de topede la pantalla) que act�a como un comando de movimiento
de cursor para reemplazar el texto selecconado. C es equivalente a c$.
Ejercicio 6: Vamos a corregir
algunas palabras. Mueva el cursor hasta la letra "b" de la palabra caberna
.Para entrar en modo de reemplazo tipee:
r
y note que en la linea de modo
aparece, "REPLACE 1 CHAR." Luego
tipee la letra :
v
para realizar el cambio. Note que
no necesita presionar ESC o RETURN cuando est� reemplazando un caracter.
El pr�ximo cambio es surcamos
a serruchamos
muevase hasta el comienzo de la palabra surcamos
entonces tipee:
cw
vi muestra un signo ($) indicando
el final del texto que ser� corregido. Tipee:
serruchamos
ESC
Para finalizar el ejercicio, mueva
el cursor a detr�s.
Cambiar� todo el texto desde detr�s
hasta el final de la linea . Comience la correcci�n presionando
:
C
Otra vez vi mostrar� un signo
$ al final de la linea. Haga el cambio tipeando:
hasta alcanzar la isla.
ESC
Deshaciendo
Ocasionalmente en forma accidental
se puede insertar un comando o borrar alg�n texto y desea restaurar
lo que habia anteriormente o volver atr�s el comando. vi le permite
deshacer el ultimo cambio de texto o deshacer el ultimo comando, lo cual
se ejecuta tipeando u. Note, no obstante, que vi solo recuperar�
el �ltimo cambio del texto.
Ejercicio 7: Muevase a la
linea El
eco del trueno sacude las nubes, aun el suelo... y
borrela tipeando :
dd
Traer la linea presionando :
u (comando que proviene de
"undo")
el cual deshace el �ltimo
cambio. Presione u unas cuantas veces mas, y observe que pasa. Cuando deshace
algo, cambia el texto, de esta manera viene el �ltimo cambio de
texto.
Uniendo
L�neas
Ocasionalmente desea juntar dos
l�neas o mas en una sola. El comando J combina la l�nea actual
con la l�nea siguiente. Esto ser�a similar a tipear 2J ,
o sea la l�nea actual mas una siguiente. Tambi�n se puede
realizar la uni�n de 4 l�neas, la actual mas las tres siguientes,
entonces se debe tipear 4J .
Ejercicio 8: Vaya hasta la
l�nea en blanco despu�s de en
pies y manos. Presione:
i
e inserteel siguiente texto:
Veo todo girar alrededor.
RETURN
Presione ESC para volver al modo
comando. Ahora vaya a la l�nea en
pies y manos. Y presione :
J
para unir �sta l�nea
con la que hab�a tipeado.
Grabando
su Trabajo
vi tiene varias maneras para grabar
los cambios. Adem�s de guardar su trabajo antes de salir, tambi�n
es buena idea guardar su trabajo periodicamente. Una falla en la energ�a
electrica o una ca�da del sistema puede causar que pierda su trabajo.
Desde modo comando, tipee :
:w RETURN
graba su trabajo ("w" es por "write").
Similarmente, para salir de vi use el comando:
:q RETURN
Ejercicio 9: En modo comando,
tipee:
:w RETURN
para ingresar el comando "write".
Despues de un momento, vi le da un reporte al pie de la pantalla, por ejemplo:
"ejemplo"
13 lines, 539 characters
No se preocupe si el n�mero
de l�neas y caracteres difiere un bit del suyo. Ahora esta seguro
de sair de vi. Desde modo comando, tipee:
:q
Se pueden combinar estos dos comandos
para grabar (write) y salir ingresando en modo comando y tipeando lo siguiente.
:wq RETURN
Una forma m�s corta y directa
para el mencionado comando es "ZZ" (SHIFT ZZ).
En algunos casos ud.desea abandonar
los cambios hechos desde la �ltima vez que grab� su trabajo
(la �ltima vez que us� el comando:w). En este caso, tipee:
:q! RETURN
lo cual le asegura que saldr�
de vi sin grabar. Este comando debe ser usado con precauci�n, ya
que abandonando vi de esta manera perder� los cambios en forma permanente.
El texto tipeado quedara de la siguiente
manera :
Nos mezclamos para golpear el
campo. El agua choca bajo nuestro, demasiado lejos lentamente en pies y
mano. Veo todo girar alrededor.
Nuestros refugios se oscurecen desagradablemente.El eco del trueno las
nubes, aun el suelo retumba cada vez que se sacude.
Echamos una mirada hacia atr�s, serruchamos un oc�ano
creciente hasta alcanzar la isla.
Nuestras tiendas deterioradas
fueron un pobre refugio esta noche. Cae un rayo destellante sobre la colina,
fabricamos una peque�a caverna en la ladera de la monta�a.
Un refugio seguro, pienso.
Nuestro refugio se destrona,
pero se levanta hacia delante poniendose seguro.
Una
Segunda Sesi�n
Repitiendo
un Comando
A menudo es necesario trabajar sobre
mas de un car�cter,palabra o linea. Por ejemplo, suponga que desea
borrar tres palabras. En lugar de tipear dw tres veces, puede tipear
3dw,
y vi ejecutar� el comando tres veces. La gran mayor�a de
los comandos de vi pueden ser repetidos de esta manera.
Tipee un n�mero(este puede
ser de mas de iun digito), y entonces tipee el comando. Si desea abandonar
el n�mero, presione ESC para cancelarlo.
Ejercicio 1: Inicie vi con
el documento ejemplo tipeando:
vi ejemplo RETURN
Una vez que vi arranca, ponga la
linea de modo con:
:set showmode RETURN
Muevase hasta la e
en eco
del trueno entonces tipee:
3dw
y note que vi borra tres palabras
de una sola vez. (Luego presione u para deshacer el borrado.)
Puede tambi�n repetir el
ingreso de un texto. Vaya a una l�nea en blanco e ingrese :
5iBOOM! ESC
(no olvide dejar un espacio entre
el signo (!) y ESC). Notara que vi agrega "BOOM!" cinco veces. Finalmente,
intente cancelando un n�mero. Vaya a la palabra delante
en la �ltima l�nea y tipee (ignore el beep):
15 ESC 7x
El ESC cancela el n�mero 15,
de esta manera vi solo borra la palabra delante
en lugar de los 15 caracteres siguientes.
N�mero
de l�neas
La mayor�a de los comandos vi usa numero
de l�neas, lo cual simplifica contar el n�mero de caracteres
RETURN en un archivo. Se puede cortar y copiar texto por n�mero
de l�neas o saltar a una cierta linea. Los n�meros de linea
pueden ser usados cuando recibe mensajes de error durante la compilaci�n
de un programa. Frecuentemente los compiladores imprimen el n�mero
de l�nea, de este modo se puede saltar a un determinado n�mero
de l�nea a ver el error.
Ejercicio 2: Para mostrar
el n�mero de l�nea, ingrese el siguiente comando:
:set number RETURN
Este comando mostrar� inmediatamente
el n�mero de l�nea en el margen izquierdo de la pantalla
del editor vi.
El comando de movimiento G le permite
saltar a alguna llinea dentro de un archivo. Primero tipee el n�mero
de linea, seguido de G. Si no tipea el numero de linea, vi salta al final
del archivo. De esta manera, 1G lo lleva al comienzo, y G lo lleva al final
del archivo.
Otro comando reporta el numero de
linea actual y el estado de su archivo. Cuando tipee CTRL-G, vi mostrar�
el nombre_archivo, y el numero de linea actual junto con el porcentaje
de texto representando todas las lineas sobre la actual.
Ejercicio 3: Desde el modo
comando, intente saltar a la linea 1, el final del documento, y a la linea
6:
1G
G
6G
Despues de tipear cada uno de estos
comandos, ver� que el cursor salta a la linea deseada.
Luego, saque el numero de lineas
ingresando el comando :
:set nonumber RETURN
Finalmente, presione CTRL-G y la
linea de modo deber� mostrar algo similar a :
"ejemplo"
[Modified] line 6 of 13 --46%--
Marcadores
Durante una sesion de edicion, estar�
cansado de tipear movimientos de cursor o tener que recordar numeros de
linea. vi le permite setear marcas en cualquier parte de un archivo.
Estas marcas permiten mover,copiar
y cortar texto muy facilmente. Los marcadores son llamados desde "a" a
"z," donde la letra los distingue unos a otros. Cuando sale de vi, los
marcadores desaparecen, asi deber�a setearlos cada vez que arranque
vi.
Setear los marcadores es facil.
Mueva el cursor donde desea colocar la marca, entonces tipee m
letter donde letter especifica
el nombre del marcador. Letter puede ser alguna letra minuscula
desde la "a" a la "z". Desafortunadamente, vi no indica que ha seteado
un marcador. Ud. puede setear marcadores en cualquier orden. No tiene para
etiquetarlos secuencialmente (a, b, c, etc.).
Ejercicio 4: Setee unas cauntas
marcas y vea como trabaja. Mueva el cursor a la palabra Nuestras
entonces setee la marca alli. Tipee:
mw
Ahora vaya a la palabra rayo
y setee una marca tipeando:
ma
Luego vaya a isla
y tipee:
ml
Una vez que ha seteado una marca,
puede volver a la linea o car�cter exacto rapidamente.
Para saltar a la marca tipee `letra
(Use el simbolo apostrofe (`)).
Para saltar al comienzo de la linea
conteniendo el marcador tipee 'letter. (Use el simbolo comilla
simple (')).
Ejercicio 5: Vaya a la primera
linea del documento, entonces salte entre las marcas tipeando lo siguiente:
`w
`l
`a
'l
'a
`w
Por ultimo intente saltar a una
marca no definida tipeando:
'c
vi hace sonar el beep porque no
conoce donde saltar.
Otros
Modos de Inserci�n
Ademas del modo insercion, vi emplea
otros modos de inserci�n. Todos ellos le permiten ingresar texto;
la �nica diferencia esta en el ounto de insercion. La Tabla 5 de
abajo describe los tres modos mas comunes: append, insert, y open. Otros
dos modos de insercion son el modo cambio y el modo de reemplazo. El indicador
de modo muestra el modo actual.
TABLE 5. Modos de inserci�n
Comando
Modo Punto de Inserci�n
a
append justo despues del car�cter actual
A
Append al final de la linea actual
i
insert justo antes del car�cter actual
I
Insert al comienzo de la linea actual
o
open nueva linea debajo de la corriente
O
Open nueva linea arriba de la corriente
Ejercicio 6: Vaya a la linea
Nuestros
refugios se oscurecen...
y presione A para agregar texto al final de la linea. Entonces tipee:
los guiones --ESC
Luego vaya a la linea en
pies y manos.
y abra una linea nueva debajo de esta presionando:
o
arrancar� el modo open,
y observe que vi crea una nueva linea para tipear texto:
Hace un paso y cae al suelo. ESC
Ejercicio 7: Ahora que ha
finalizado los ejercicios de esta seccion ingrese:
:wq RETURN
para guardar los cambios y salir
de vi.
Cortar,
Copiar, y Pegar
En forma frecuente hace falta cortar o copiar
alg�n texto, y pegarlo en alg�n otro lado del documento.
En primer lugar se copia o corta el texto en un almacenamiento temporal,
entonces lo pega en otro lugar. Cortar significa mover texto del documento
y almacenarlo, mientras copiar significa poner un duplicado del texto en
el almacenamiento. Finalmente pegar es colocar el texto almacenado en el
lugar deseado.
Buffers
vi usa un buffer para almacenar
el texto temporario. Hay nueve buffers numerados que se suman a un buffer
de deshacer. El buffer de deshacer contiene el mas reciente borrado. Usualmente
el buffer 1 contiene el borrado mas reciente, el buffer 2 el pr�ximo
mas reciente, y as� sucesivamente. Los borrados despues de 9 desaparecen.
Sin embargo, vi tambi�n tiene ventiseis bufferes llamados desde
(a-z). Estos buffers son usados para almacenar bloques de texto para recuperarlos
luego. Las letras de los buffer son independiente de las letras de las
marcas, de esta manera el buffer k y la marca k no estan relacionadas.
El contenido de un buffer no cambia
hasta que se pone un texto diferente dentro de �l. A menos que ud.
cambie el contenido de un buffer, �ste es retenido hasta que salga
de vi. Como con los marcadores, vi no graba los buffers cuando se termina
la sesi�n de vi.
Por
n�mero de L�nea
Dos comandos simples permiten cortar y copiar
texto ingresando el rango en lineas y la linea destino. El comando m mueve
un rango de texto, y el comando t lo transfiere. t es un sin�nimo
de c (copy). El comando tiene la forma que se muestra mas abajo.
:line1mdestline
Mueve
(corta) la l�nea n�mero, line1, a la l�nea que se
indica luego en destline
:line1,line2mdestline
Mueve
(corta) lineas entre las l�neas line1 y line2, hasta el n�mero
de l�nea, destline
:line1tdestline
Transfiere
(copia) la linea numero, line1, a la l�nea que se indica en, destline
:line1,line2tdestline
Transfiere
(copia) lineas entre las l�neas line1 y line2, en el n�mero
de linea, destline
Ejercicio 1: Primero inicie
vi como en los temas anteriores, luego intente estos comandos. Vaya a la
l�nea Echamos una mirada
and press CTRL-G. Note el n�mero de l�nea. Entonces vaya
a la linea Un
refugio seguro y presione CTRL-G,
y vea el numero de linea (probablemente 11). Ahora esta listo para copiar
("move") Echamos
una mirada a otra linea. Tipee:
:3m11<> y presione RETURN para
finalizar el comando.
Cortar
y Copiar (Delete and Yank)
General
vi tiene su propia terminologia
para "cortar" y "copiar": "delete" and "yank," respectivamente. Note que
el comando de borrado es el mismo que ya us�; cada vez que se borra
un texto, vi cambia el buffer automatico y pone el borrado previo en el
pr�ximo b�ffer numerado. Cuando borra o copia, el texto deseado
entra a un buffer. Si no especifica un buffer nombrado, vi usa el buffer
automatico(buffer 1).
El comando borrar y copiar toma
la siguiente forma:
Mueva el cursor al final del texto
deseado.
Si lo desea, especifique un buffer
nombrado tipeando "letter donde letter es una letra desde a hasta z. Si
no nombra un buffer, vi usa los buffers automaticos 1-9.
Tipee un numero de repeticion, si
es necesario. (para copiar 5 palabras o 8 lineas, por ejemplo.)
Tipee d para borrar el texto, o
tipee y para copiar el texto.
Tipee una tecla de movimiento de
cursor (b, e, w, etc.---vea Tabla 2) determine la unidad de texto; si en
cambio tipea d o y, vi usa como unidad la "linea". La tecla de cursor completa
el borrado o copiado y almacena el texto en el buffer deseado.
Los marcadores tambien le permiten
especificar un rango de texto para cortar o copiar sin tener que contar
palabras o l�neas. El siguiente procedimiento le muestra como borrar
o pegar texto usando marcas.
Muea el cursor al final de la selecci�n
primera.
Tipee la letra m para setear una
marca.
Muva el cursor al final de la otra
selecci�n.
Si lo desea, especifique un buffer
nombrado tipeando
"letra
Si
no tiene un buffer nombrado, vi usa los buffers automaticos.
Tipee d o y para borrar o copiar
texto, respectivamente.
Usando letter desde la marca,
tipee
`letra
para
borrar o copiar el texto entre la marca y el cursor.Debera tipear
'letra
para
borrar o copiar el texto por linea.
Pegar texto desde un buffer implica
tres pasos:
Mueva el cursor a la localizacion
que desea pegar.
Si esta recuperando texto desde
un buffer nombrado, especifique el buffer tipeando "letra. De otra manera
vi usa los buffers automaticos.
Tipee p para pegar el texto del
buffer despues del car�cter actual o tipee P para pegar antes del
car�cter actual. Si el texto del buffer es almacenado por linea,
pegara abajo o arriba de la linea actual.
Ejercicio 2: Este ejercicio
realiza un estandar de copy-y-paste. Este usa buffer automatico y no usa
marcadores. Vaya a la primera linea del texto Nos
mezclamos..., entonces yankee tres lineas
del texto tipeando (el termino "yankee" lo usamos como arrastre) :
3yy
Nada parece suceder, pero vi ha puesto las primeras
tres lineas dentro del buffer autom�tico. El mensaje "3 lines yanked"
aparece al pie de la pantalla. Ahora vaya a la linea Un
refugio seguro y pegue las lineas alli.
Para ello presione :
p
Ejercicio 3: En este ejercicio
use marcadores para identificar el texto que desea cortar, realice un corte
normal. Primero, vaya a Echamos
y ponga una marca alli tipeando:
mx
Entonces vaya a la B
en el cuarto "BOOM!". Corte el texto y pongalo en el buffer e tipeando:
"ed`x
El texto desaparece, pero vi lo
ha puesto en el buffer e.
Segundo, copie el resto de BOOM!
BOOM! en el buffer automatico. Tipeando:
dd
Tercero, pegue el contenido del
buffer automatico : mueva a la segunda instancia de Nos
mezclamos...
y presione:
P ("P" mayuscula)
Cuarto y �ltimo, vaya a la
linea en blanco despues de Un
refugio seguro... Pegue el texto desde
el buffer e tipeando:
"ep
Despues de estos dos ejercicios,
la pantalla deberia mostrar lo siguiente:
Nos mezclamos para golpear el
campo. El agua choca bajo nuestro, demasiado lejos lentamente en pies y
mano. Veo todo girar alrededor.
Nuestros refugios se oscurecen desagradablemente.El eco del trueno las
nubes, aun el suelo retumba cada vez que se sacude.
Echamos una mirada hacia atr�s, serruchamos un oc�ano
creciente hasta alcanzar la isla.
BOOM! BOOM! BOOM!
Nuestras tiendas deterioradas
fueron un pobre refugio esta noche. Cae un rayo destellante sobre la colina,
fabricamos una peque�a caverna en la ladera de la monta�a.
Un refugio seguro, pienso.
BOOM! BOOM!
Nuestro refugio se destrona, pero se levanta
hacia delante poniendose seguro.
~
~
Buscar
y Reemplazar
Como los archivos llegan a ser largos, se necesita
asistencia para localizar una instancia particular de texto, vi tiene varias
caracteristicas de busqueda y busqueda y reemplazo.
B�squeda
Simple
vi puede buscar en un archivo completo
por un string de texto dado. vi busca hacia delante con la barra (/) o
hacia atr�s con el signo de interrogacion (?). Ejecute la busqueda
tipeando el comando luego el string seguido de RETURN. Para cancelar la
busqueda, presione ESC en vez de RETURN.
Se puede hacer una nueva busqueda
tipeando n (hacia delante) o N (hacia atras). Tambien, caundo vi alcanza
el final del texto, continua buscando desde el comienzo. Esta caracteristica
es llamada "wrapscan".
Ejercicio 1: Arranque vi
como de costumbre e intente una busqueda simple. Tipee:
/and
y presione n y N unas cuantas veces
para ver donde va el cursor.
Caracteres
Especiales
vi soporta algunos caracteres especiales,
los cuales actuan como comodines o exclusiones de busqueda. Estos caracteres
especiales y sus usos son resumidos luego en los ejercicios. Note que cccc
ssoporta algunos caracteres; esto podria ser g, gefha, o 23CG-4. Los caracteres
especiales son : $ . * [ ] ^ \.
Cuando se especifica el string de
b�squeda, algunas veces desear�a buscar por uno de los caracteres
especiales. Para ello, tipee el caracter (\) inmediatamente antes del car�cter
especial. Por ejemplo, \$5 encuentra "$5.00." Para especificar un backslash
simple, tipee \\.
La tabla siguiente resume los caracteres
especiales. Note que el (slash /) arranca una b�squeda hacia adelante.
Puede reemplazarlo con un signo de interrogaci�n (?) para buscar
hacia atr�s.
Ejercicio 2:
Intente algunas
de las b�squedas de string de la tabla precedente, entonces intente
la siguiente combinacion:
/ \<s.o palabras comenzando
con s, alguna letra, luego o (shook, slow)
/ \<h.*s\> palabras que comienzan
con h y terminan con s con cualquier numero de caracteres entre ellas (heavens,
hills)
/o.[rtk] palabras conteniendo o,
caulquier letra, y r, t, o k (bolt, foot, poor, shook)
Busca
y reemplaza
vi puede tambien buscar y reemplazar,
lo cual significa buscar instancias de un car�cter dado y reemplazarlo
con un nuevo string. Esta operaci�n de b�squeda y reemplazo
puede ser de la siguiente forma :
:
line1, line2s/ oldstring
/ newstring
Donde se especifica el rango de
texto para el comando de busqueda y reemplazo con los n�meros de
linea line1 y line2. Si ud. solo da line1 y omite la coma, entonces el
comando solo afecta la linea. Si ud. no especifica el numero de linea el
comando afecta la linea actual. Este comando de busqueda y reemplazo solo
busca la primera ocurrencia de oldstring en la linea.
Puede repetir este comando tipeando
un ampersand (&). Para repetirlo en una linea diferente o grupo de
lineas, tipee:
:
linenumber&
o
: line1,line2&
Ejercicio 3: Intente reemplazar
la palabra refugios
con bovedas
vaya a la �ltima l�nea y presione CTRL-G para ver el n�mero
de linea. Luego vaya a la linea Nuestros
refugios..., donde realizara la primera
busqueda y reemplazo. Tipee:
:s/refugios/bovedas
y presione RETURN. LA primera palabra
"refugios" se cambia a "bovedas" Ahora presione el ampersand (&) para
repetir el comando. Nada pasa y vi muestra lo siguiente :
Substitute
pattern match failed
porque vi busca "refugios" en la
linea corriente. En cambio use el numero de linea desde el comienzo de
este ejercicio y tipee:
:16 &
Presione RETURN y vi reemplaza la
ocurrencia de "refugios" en la linea 16.
Banderas
Especiales
Puede agregar una bandera al comando
busqueda y reemplazo; la bandera avisa a vi el reemplazo de cada ocurrencia
o preguntara por una confirmaci�n antes de cada reemplazo. Para
agregar una bandera, use la siguiente forma:
: line1, line2s/ oldstring
/ newstring / flag
Flag es un parametro opcional. Si
flag es c entonces vi le mostrara cada instancia de oldstring y espera
por una confirmacion; tipee y (para yes) o n (para no) seguido de RETURN.
Una bandera g requiere una busqueda y reemplazo global, sin confirmacion.
Ejercicio 4: Ejecute una
busqueda y reemplazo con confirmacion. Presione CTRL-G y note cuan largo
es el texto (probablemente 17 lines). Entonces ingrese:
:1,17s/Nuestro/El/c
y presione RETURN. vi le indicara
cada ocurrencia de la palabra "Nuestro" y aguardara una respuesta. La primera
vez Nuestros refugios se oscurecen...,
presione:
y RETURN
La segunda vez Nuestro
refugio se destrona..., presione:
n RETURN
Presione RETURN una vez mas, y vi
actualiza la pantalla.
Chequee el mensaje actual con el
siguiente, entonces guarde su trabajo y salga de vi para finalizar este
ejercicio.
:q! RETURN
El texto despues de los ultimos
cambios quedara de la siguiente manera:
Nos mezclamos para golpear el
campo. El agua choca bajo nuestro, demasiado lejos lentamente en pies y
mano. Veo todo girar alrededor.
Els refugios se oscurecen desagradablemente.El eco del trueno las nubes,
aun el suelo retumba cada vez que se sacude.
Echamos una mirada hacia atr�s, serruchamos un oc�ano
creciente hasta alcanzar la isla.
BOOM! BOOM! BOOM! BOOM! BOOM!
Nuestras tiendas deterioradas
fueron un pobre refugio esta noche. Cae un rayo destellante sobre la colina,
fabricamos una peque�a caverna en la ladera de la monta�a.
Un refugio seguro, pienso.
El refugio se destrona, pero se levanta hacia delante poniendose seguro.
~
~
Temas
Avanzados
Variables
vi mantiene varias variables que controlan diferentes
aspectos de apariencia. Ya hemos usado algunas de estas (:set number, :set
showmode).
Variables
num�ricas y switch
Los dos tipos de variables son (toggle)
switch y numericas. Las variables switch cambian de opcion on u off, mientras
las variables numericas toman un numero como argumento.
Lleva a on una variable switch con:
:set
variable
y puede llevarla a off tipeando:
:set novariable
Las variables numericas son seteadas
con un signo igual (=) y el correspondiente valor. Por ejemplo, para setear
tab stops cada seis espacios, debera ingresar
:set tabstop=6
TABLA 7. Seteo de Variables
Variable
Default Descripcion
ignorecase
noignorecase No hace distincion entre letras mayusculas y
minusculas
durante las busquedas.
number
nonumber Muestra numeros de lineas.
showmode
noshowmode Muestra el modo inserci�n, cuando esta en blanco
esta
en modo command
wrapscan
wrapscan Cuando una busqueda alcanza el fin del archivo
este
wraps around vuelve al comienzo
y
continua la busqueda
report
report=5 Cuando mas de este numero de lineas son
modificadas,
borradas, copiadas, o pegadas, vi
imprime
un mensaje. Esta opcion alerta
sobre
modificaciones largas.
tabstop
tabstop=8 Setea tab stops para multiples valores
Normalmante
8 trabaja bien.
wrapmargin
wrapmargin=0 Setea el margen derecho. Cuando se pasa
el
margen seteado por wrapmargin, vi
automaticamente
crea una linea nueva.
Variables
Usadas
Esta seccion contiene una lista
de las variables mas usadas para trabajar en vi. Para ver una lista de
todas las variables y su seteo, ingrese
:set all
Ejercicio 1: Ud. ya conoce
como cambiar los numero de linea con on y off , y tambi�n ha usado
la variable showmode. Ahora intente con una variable numerica. Desde el
modo comando, tipee:
:set wrapmargin=5
Este comando setea el margen derecho
del archivo a 5 caracteres. Desafortunadamente, esto no afecta lineas existentes,
solamente texto nuevo que ud. ingresa. Mueva el cursor hasta "I saw everything."
Entre en modo insercion presionando:
i
y tipee :
Staggering like a drunken bum, each
step a wicked dance, ESC
Note que la linea da vueltas alrededor
del margen de la ventana, pero vi automaticamente crea una nueva linea
para el texto mas alla del margen derecho.
Teclas
Especiales y CTRL-V
Antes de proceder con el resto de
este capitulo, usted necesita aprender sobre los caracteres de control.
Los caracteres de control son invisibles los cuales las conputadoras usan
para manejar los protocolos de omunicacion. La tecla RETURN es el car�cter
de control (CTRL-M), com el de la tecla ESC es (CTRL-[ ). Las teclas de
funcion son usualmente una secuencia de control y caracteres regulares.
vi permite poner un car�cter de control en el texto precediendolo
con CTRL-V (el cual es tambien un car�cter de control).
Ejercicio 2: Vaya a la primera
linea del archivo y presione:
O ("O," mayuscula no cero)
para crear una nueva linea. Luego
tipee:
CTRL-V RETURN CTRL-V CTRL-T
Note que cuando presiona el primer
CTRL-V, vi muestra un car�cter (^) , el cual indica que el proximo
sera un caractrer de control. Luego tipee algunos caracteres de control
mas:
CTRL-V CTRL-V CTRL-V F1 CTRL-V ESC
Observe que se ha insertado un CTRL-V,
un ESC, y ls secuencia F1 en el texto. No se preocupe si la secuencia F1
muestra como basura. Ahora borre los caracteres de control y las tres primeras
lineas de texto, tipeando:
ESC 4dd
Mapeando
Teclas
Puede mapear una simple tecla en
varios caracteres con el comando map. Esto le permite asignar funciones
a la tecla de funcion. Este comando es de la forma:
:map keystroke result
donde keystroke es un car�cter
simple o tecla de funcion, y result es la secuencia de car�cter
que deberia ser disparada. El mapeo de teclas permanece en efecto hasta
que sale de vi.
Ejercicio 3: Este ejercicio
mapea la tecla de funcion F1. Vaya al comienzo del archivo desde el modo
comando tipee (_ significa un espacio)
:map_CTRL-V F1_1G
Antes de presionar RETURN asegurese
de que ha comprendido lo que esta haciendo: :map da a vi el comando "map".
F1 es el keystroke, pero esta es precedida por el car�cter de control,
CTRL-V. Finalmente, 1G es el result, el cual le indica al comando de vi
que se vaya a la primera linea del archivo.
Ahora pruebe su mapeo. Vaya a una
linea diferente y presione F1; el cursor deberia saltar a la primera linea
del archivo. Intentelo nuevamente.
Macros
Puede ejecutar una macro de vi,
lo cual significa que vi lee el contenido de un buffer nombrado (a-z) y
los ejecuta como si fueran comandos. Porque una macro es texto tratado
como comandos de vi, una macro g y el buffer g son el mismo buffer.
Para setear una macro, borre o copie
una macro existente en un buffer. Ejecute la macro tipeando @char.
Ejercicio 4: Cree una macro
que busque lineas que comiencen con "BOO" y las borre. Primero vaya al
final del documento, entonces entre en modo open presionando:
o
Ahora esta listo para tipear el
comando para la macro. Tipee (sin espacios):
/^BOO CTRL-V RETURN dd ESC
Borre (corte) el texto de la macro
en el buffer z como un texto ordinario: tipee:
"zdd
Ahora esta listo para ejecutar la
macro; tipee:
@z
y la primera linea de "BOO" desaparece.
Ejecute la macro de nuevo con @z.
Grabando
una configuracion de vi
Ud. ha aprendido a setear la barra
de estado y el margen derecho tipeando:
:set showmode
:set wrapmargin=5
Estas dos caracteristicas son muy utiles, pero
seguramente no quiere tipearlas cada vez que inicie vi. Afortunadamente,
puede guardar estas configuraciones en un archivo llamado .exrc. Cada vez
que arranca vi, este lee .exrc y ejecuta todos los comandos dentro de el.
.exrc puede contener comandos :map
y :set . Cada uno debe estar en una linea separada, pero mas importante
es destacar que se deben omitir los dos puntos (:) . Con un poco de trabajo,
se puede mapear las teclas de funci�n dentro de sus propias funciones:
movimientos del cursor , cortar y pegar, y grabar y salir.
Ejercicio 6: En este ejercicio
crearemos un archivo .exrc basico.
Entre en modo insercion y setee
dos variables :
i
set showmode RETURN
set wrapmargin=5 ESC
Grabe este archivo. Ahora, cuantas veces arranque
vi, invocara estos dos comandos .
|