Descargar

Anuncio
Manual de vi
Introducción:
El vi es el editor estándar de Unix. Este trabaja en modo 'full screen' . El vi tiene dos modos de
trabajo:
1. Comandos e insercción. En el modo comandos todo lo que el usuario introduce es
interpretado como un comando;
2. En el modo insercción lo que el usuario introduce es texto que será guardado en el archivo
de salida.
La mejor forma de aprender a utilizar el vi es utilizándolo por ejemplo modificando un archivo
existente (sea cuidadoso no edite o modifique un archivo que sea necesario, utilice un archivo de
test con una copia de un archivo. Por ejemplo haga lo siguiente
$ vi test
Cuando Ud entra en el editor puede salir pasando primero al modo comando. Esta acción se realiza
mediante la tecla ESC el cursor bajará a la última línea y pondrá los ':' este prompt (:) indica que
está en el modo comando, por ejemplo para salir descartando todas las modificaciones es q!
generalmente todos los comando son la primera letra de la acción (quit en este caso) y en el caso
de ! indica que sin confirmación. Si se desean salvar los cambios será w (por write) y salvar los
cambios y salir wq (por write & quit).
Modo Comando
El editor se inicia en el modo comando. Hay diferentes formas de ir al modo de insercción pero
siempre se regresa a este modo con la tecla de ESC. Si no se está seguro en que modo está presione
el ESC hasta que oiga un beep, lo cual le indicará que está en modo comandos.
Los comandos básicos de vi son:
:wq
:q!
Salvar y Salir
Salir sin salvar:
Append: Modo insertar e la siguiente posición del
a
cursor
i
Insert: Modo insertar sobre la posición del cursor
x
Borra caracter bajo el cursor
dw
Borra palabra
dd
Borra línea
u
Deshacer (Undo)
Ctrl-F Pantalla sgte.
Ctrl-B Pantalla anterior
O
Inserta línea en blanco
Secuencia de comandos básicos
El vi utiliza el editor ex cuando trabaja en modo comandos y siempre es la última línea de la
pantalla con el prompt : por donde se le indican los comandos al ex. Los comandos admiten
repetición que indicará cuantas veces se ejecutará el comando. Por ejemplo dd borra una línea pero
4dd borrará 4 líneas. La mayoría de los comando no producen salida por display de la acción, pero
si cuando la acción es finalizada, por ejemplo cunado ponga 11dd (borrar 11 líneas) el vi le dirá '11
lines deleted'.
Movimientos dentro del archivo
Ud. debe estar en modo comando para moverse dentro del archivo. Generalmente las teclas de
cursor funcionan bien (pueden no funcionar si Ud. está conectado a través de un emulador de
terminal - desde un PC por ejemplo - y no coincide la variable TERM de Unix con la que Ud. está
emulando, solución: cambie la variable TERM con -en csh- setenv TERM vt100 -en shTERM=vt100 export TERM y en el emulador seleccione como terminal vt100). Si Ud. está en
modo insertar y presiona las teclas de cursor le insertará el caracter que ellas representan.
Presionando la tecla RETURN se moverá a la siguiente línea. La tabla siguiente muestra los
movimientos más comunes:
Return
j
k
l
h
Ctrl-F
Ctrl-B
Ctrl-D
Ctrl-U
[[
]]
nG
w
b
{
}
/string
Siguiente línea
Siguiente línea
Línea previa
Siguiente caracter
Caracter anterior
Pantalla siguiente
Pantalla anterior
Media pantalla siguiente
Media pantalla anterior
Inicio documento
Fin documento
Ir a línea n
una palabra a la derecha
una palabra a la izquierda
fin párrafo
fin párrafo anterior
Busca string
Para ir a la línea 10 introduzca 10G (si sólo introduce G se moverá hasta el final del archivo). Para
averiguaren que línea está presione Ctrl-G. Las palabras, sentencias, y párrafos tienen especial
significado para el vi y existen comandos para moverse a través de ellas. Una palabra es cualquier
caracter delimitado por blancos o puntuación y también cada símbolo de puntuación es una palabra.
Sin embargo si Ud. utiliza la mayúcula del comando de movimiento se saltará la puntuación, por
ejemplo B es lo mismo que b y mueve el cursor una palabra hacia atrás pero si hay un punto b se
parará aqui pero B no.
Una sentecia es un string con un punto final y dos espacios en blanco. Con ) y ( Ud. se moverá
hacia adelante una sentencia o hacia atrás respectivamente.
Un párrafo es el que termina con dos Return.
Búsqueda de strings
Las búquedas se realizarán en modo comando y para iniciarla debe presionar /. Esto causará que el
cursor baje a la línea inferior, indique el string a buscar finalizando con un Return. Si desea buscar
en orden inverso presione ? en vez de /.
Modo texto
Antes de ir al modo texto recordar que siempre se sale de él mediante un . La tabla siguiente
muestra los comando básicos para pasar a modo texto.
a append inserta después del caracter sobre el cual estamos
i insert antes de caracter sobre el que estamos
A append al final de la línea actual
insert antes del 1º caracter diferente de espacio en la línea
I
corriente
o abre una línea en blanco abajo de la actual
O ídem anterior pero sobre la actual
Correcciones
La única forma de corregir un error en modo texto es hacer un backspace y reintroducir los
caracteres.
Correcciones más complejas deben ser realizadas desde el modo comandos. La tabla siguiente
muestra los comando que pueden ser utilizados:
x
dw
dd
r
borra caracter
borra palabra
borra línea
reemplaza un caracter sobre el cursor
reemplaza
un
string
de
caracteres
R
(sobreescribe)
cw cambia una palabra
s sustituye un caracter por un string
. repite el ultimo cambio
Un comando interesante es el punto (.) el cual repite el último cambio hecho en edición. Este puede
ser utilizado para cambiar cada ocurrencia de un string con otro, por ejemplo: si introducimos el
comando /feo para buscar el string "feo". Entonces entre el comando cw e introduca "lindo" para
reemplazar feo por lindo. Presione para aceptar el cambio. Para encontrar la siguiente ocurrencia
introduzca el comando n y luego . para repretir el último cambio.
Búsqueda y reemplazo global
El siguiente ejemplo es una búsqueda global con reemplazo para mostrar las capacidades del vi.
Se desea buscar la cadena viejo y sustituirla por nuevo, desde el principio al final del texto:
:1,$s/viejo/nuevo/g
Se desea buscar en todo el archivo "feo" y reeemplazarlo por "lindo":
:g/feo/s//lindo/g
Si se desea utilizar caracteres especiales de debe emplear el \ (backslash). Por ejemplo para
reemplazar todos los $ en **:
:g/\$/s//**/g
El return también puede ser especificado introduciendo 'ControlV'.
Quick Reference
La siguiente tabla da una referencia rápida con lo que soporta el vi (generalmente el vi tiene los
mismo comandos en diferentes sistemas):
Obs: Los comandos comienzan por : y termina con return, preste atención a la tecla de Mayúsculas
porque los comando difieren sin está apretada o no
Para empezar
vi file
vi -r file
vi + n file
vi + file
vi file1 ... filen
vi + /str file
Salvar y Salir
ZZ o :wq o :x
:w file
:w!
n,mw file
n,mw>> file
:q
:q!
Q
:e!
Comandos de status
:.=
:=
Ctrl-g
:l (ele)
Insertar
a
A
i
I
o
O
Ctrl-V char
:r file
:nr file
edita file
edita la última versión salvada de file (recupera)
edita y pone el cursor en la línea n
ídem pero a la última línea
edita file1 a filen, despues de salvar file1, presione n para la
siguiente
edita y sitúa el curso en la línea que contiene str
salva y sale
salva en file, si no existe file salva en la actual
salva y no controla la protección de escritura
salva desde la línea n a la m en file
añade desde n a m al final de file
sale (si hay cambios no lo ejcuta el comando)
sale (si hay cambios los descarta)
permite pasar al ex (:vi retorna)
reedit el archivo actual, descarta los cambios
imprime línea actual
imprime nº de líneas en el archivo
imprime status del archivo
imprime los caracteres especiales de la línea actual
append
append después del final de la línea
insert
insert antes del cominezo de la línea
inserta un línea nueva (abajo)
inserta una línea nueva (arriba)
inserta el char (válido para insertar caracteres de control)
lee file e inserta después de la línea actual
ídem pero inserta después de la línea n
Undoing
u
U
"np
n
N
,
.
Posicionamiento del cursor
{
[[
]]
Movimientos del cursor
k
j
h
l (ele) o Space
woW
boB
eoE
0o|
$
+ o Return
G
G$
nG
(
)
{
}
Borrar
<- o Ctrl h
Ctrl w
Crtl x
nx
nX
D
ndw
undo último comando
Restaura la línea al estado original
Retrive el n-esimo delete (hasta 9 max)
repite el último / o ? (búsqueda)
Ídem anterior pero en orden inverso repite la última (bísqueda)
ídem anterior pero en orden inverso
repite el último cambio de texto
Marca las secciones cuando está en la primera columna
Hacia atras y principo de sección
hacia adelante y principo de sección
arriba
abajo
izquierda
derecha
siguiente palabra (Mayúscula ignora puntuación)
palabra previa
fin palabra
1º columna
ultimo caracter en la línea
1º caracter de la línea
1º caracter no blanco de la línea
última línea
último caracter
linea n
comienzo de sentencia
cominezo de sgte sentencia
Comienzo de párrafo
Comienzo de párrafo sgte
borra caracter en modo insertar
borra palabra en modo insertar
borra texto insertado en modo insertar
borra n caracteres incluyendo el de la posición del cursor
borra n caracteres previos al cursor incluido
borra desde posición actual al fin de línea
borra n palabras
Búsqueda
%
fchar
Fchar
tchar
Tchar
/str
?str
:set ic
:set noic
Copiar
nyy o nY
p
P
busca el comienzo de () [] {}
busca hacia adelante char
busca hacia atrás char
busca hacia delante linea actual
busca hacia atrás linea actual
busca string
busca string hacia atrás
ignore case
no ignore case
copia n líneas en el buffer desde la actual
print las líneas de buffer en la posición del cursor
ídem pero antes del cursor
Descargar