Indice

Introducci�n

Informacion General

Acerca de vi

Una breve sesi�n de Vi

Arrancando Vi

Modo Inserci�n y modo 

Comando

Insertando Texto

Movimiento del cursor

Borrando texto

Haciendo Correcciones

Deshacer

Uniendo lineas

Grabar su Trabajo

Una Segunda Sesi�n

Repetir Comandos

Numeros de Linea

Marcadores

Otros modos Insert

Cotar, copiar y pegar

Buffers

Por numero de linea

Cortar y Pegar

General

Usando Marcadores

PegarBuscar y Reemplazar

Busqueda Simple

Caracteres Especiales

Buscar y Reemplazar

Banderas Especiales

Temas Avanzados

Variables

Variables Num�ricas y Swith

Uso de variables

Teclas especiales y Ctrl -V

Mapeando Teclas

Macros

Grabando la Configuracion de Vi
Introducci�n

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.

Usando Marcadores
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.
Paste

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 .
 

Autor : Carlos Lizarraga.
Traducido por:  Daniel Ibarra.
 


Hosted by www.Geocities.ws

1