Importante Como Usar "vi"

Pues bien, en vista de q muchos de los habitantes q pululan por este foro estan siempre con el , como editar esto o como edita lo otro, intentare dar nociones de como hacer funcionar el editor mas conocido de los sistemas *nix puesto q es el editor por excelencia q tienen todos los sistemas *nix.

Introduccion :

Vi resulta de gran ayuda para los administradores de sistemas , ya q como he dicho antes esta disponible en cualquier plataforma Unix. Vi tambien resulta recomendable pq requiere de muy pocos recursos para ejecutarse , lo q significa q se puede usar vi cuando no puedes usar otros programas por problemas con el hardware o con el sistema ( esa es una de las diferencias mas notables con emacs).
Tambien podemos encontrar el editor vim q simplemente es el viMproved (o vi mejorado)

¿Qué es vi?

El editor vi no es un procesador de textos ni un sistema de edicion de escritorio.No hay menus ni prácticamente ninguna utilidad de ayuda.
El editor vi funciona en dos modos:

1) Modo comando donde vi interpreta las teclas como comandos.Algunos de estos comandos permiten guardar un archivo, salir de vi, mover el cursor etc..
2) Modo de entrada o entrada de caracteres, donde se interpreta como texto cada tecla q es pulsada. ( maquina de escribir)
En una sesion de edicion se pueden alternar libremente ambos modos pero es importante saber en q modo estamos y como cambiar al otro modo.

Aunque vi parezca muy incomod al principio os aseguro q va de perlas para editar ficheros ASCII o secuencias shell de linux-unix.

Usando Vi

Para iniciar vi simplemente se debe escribir en una consola o shell el comando “#vi archivo “ donde archivo puede ser un archivo existente o bien uno q queremos crear. Aquí hay q tener en cuenta q muchos archivos de configuración, aunque nos los deje abrir, igual no nos los deja editar, eso es devido a una cuestion de permisos, es muy probable q uno no pueda esitar alguna cosa si no es root ( al lorito con ser root q la gente siempre tiene tendencia a entrar como root en los sistemas linux y se tiene q usar lo menos posible, solo lo necesario)
En fin, una vez iniciado vi veremos una pantallita con caracteres “~” si hemos abierto un archivo nuevo o con caracteres si ya existia , ese símbolo es el indicativo de memoria intermedia vacia, como todos los editores mientras no se salve el archivo , cualquier cambio solo tiene efecto en la memoria intermedia ( podriamos decir q se crea una instancia del archivo abierto en memoria). Ahora vi esta en modo comando.

Como insertar texto?

Pues bien, llegados a este punto nosotros situaremos el cursor donde queramos del texto ( o lo dejamos al principio si el archivo es de nueva creación) y para empezar a escribir podemos apretar una de las siguientes teclas o ( solo se tiene q apretar la tecla no las flechas < o > ) la corresponde a insertar texto delante del cursor y detrás del cursor.

En fin creo q lo mejor es q os haga un resumen de las teclas a usar en modo comando. Para conmutar entre modo edicion y modo comando solo tenemos q usar la tecla escape (ESC) . Otra cosa q teneis q saber es q en modo comando se puede ver los comandos q introducimos en la parte inferior de la pantalla donde hay una linea de información q ademas de informarnos q tecla o comando estamos introduciendo nos informara de los posibles errores.
MODO COMANDO
(explicación posterior de uso de algunos comandos *)
Nota: cuando hay dos letras es la combinación de ambas = dd
Solo pongo algunos comandos

---------- Insertar texto antes del cursor
---------- Introduce texto al rpincipio de la linea
---------- Introduce texto después del cursor
---------- Introduce texto al final de la linea
---------- Introduce una nueva linea por debajo del cursor *
---------- Introduce una nueva linea por encima del cursor
----- Borra la palabra (del word)
----- Borra toda la linea (double del .. supongo :P )
---------- Borra hasta el final de la linea desde la posición del cursor
---------- Borra el carácter situado en la posición del cursor
----- Cambiar la palabra *
----- Cambia la linea
---------- Introduce cambio hasta el final de la linea
---------- Remplaza un solo carácter ( mejor desde modo texto apretar backspace)
---------- Desplazarse una palabra
<$> ---------- Desplazarse hasta el final de la linea
---------- Se desplaza una linea por encima
---------- Se desplaza una linea por debajo
----- Buscar cadena, se desplaza hasta la cadena coincidente con x ( x = palabra)
<;> ---------- Repite el ultimo comando
num ----- Desplaza el cursor hasta el numero de columna especificado en num
---------- Desplaza cursor a la primera linea q se muestra en pantalla
---------- Desplaza cursor a la ultima linea del texto
num ----- Desplaza cursor a la linea q indiquemos en num
<^> ---------- Desplaza el cursor hasta el principio de la linea
----- Reajusta la pantalla
----- Muestra el nombre de archivo, la linea actual, y num de columna
----- Copia toda la linea en la memoria intermedia ( ctrl.-c para entendernos)

---------- Introduce lo q tengamos en la memoria intermedia ( paste)*
:w ---------- Escribe los cambios en el fichero
:w nomb ----- Guarda el fichero con el nombre dado
:q ---------- Sale de vi
:q! ---------- Sale del archivo sin guardar cambios
:wq ---------- Guarda los cambios en el archivo y sale de vi
:r archv ----- Lee archivo especificado con el editor
:e archv ----- Edita el archivo
:! Cmd ----- Ejecuta el comando shell especificado ( util)
:num ----- Se desplaza el num de lineas especificado
/cadena ----- Busca cadena hacia delante
?cadena ----- Busca cadena hacai atrás
----- Deshace el ultimo comando
. ---------- Repite el ultimo comando
----- Guarda el archivo y sale rapidamente
---------- Cambia al modo comando



Comando a destacar:

:x,y s/cadena antigua/cadena nueva ---- Muy util Sustituye la cadena antigua por la nueva cadena desde la linea x hasta la linea y ( si se introduce y=$ y X= ^ es desde el principio al final del texto) Es util para cuando tenemos una archivo por ejemplo de win y nos deja el rastro de los return o carry return al final de cada linea,)


Nota sobre los comandos:
La gracia de los comandos es q en vi además se pueden combinar o repetir, por ejemplo si suponemos q queremos borrar 4 palabras se puede poner <4> o si queremos borrar 3 lineas <3>

Explicación algunos comandos:

Explicación comando ( Introduce una nueva linea por debajo del cursor )

Imaginemos q tenemos

“El foro de soft libre de eol
Vale la pena mirarselo de vez en cuando”

Si situamos el cursor detrás de eol y escribimos en modo comando Es muy buen foro , obtendremos

“El foro de soft libre de eol
Es muy buen foro
Vale la pena mirarselo de vez en cuando”


Explicación comando

(Introduce lo q tengamos en la memoria intermedia ( paste))

Imaginemos q tenemos

“El Foro libre soft es muy interesante”

si nos situamos en la palabra sofá y pulsamos borraremos la palabra obteniendo
“El foro libre es muy interesante”
ahora nos situamos delante de libre y apretamos

asi hara un paste de lo borrado obteniendo
“El foro softlibre es muy interesante”



**********Editado *************

Añadido comando ( Thanks Sergiox)

********** /editado ***********

OPCIONES DEL VI

El editor vi dispone de varias opciones para usar si se quiere, algunas pueden definirlas el administrador del sistema para todo el sistema.

Tabla de opciones y explicación: (pd = por defecto)

ai

Esta opcion es la opcion llamada autoident q lo q hace es sangrar cada linea al mismo nivel que la superior ( es util para editar programas ) (pd = OFF)

ap

Autoprint imprime la linea actual en la pantalla cuando se cambia de linea. (pd = ON)

eb

Errorbells , el ordenador envia una señal acustica cuando te equivocas al escribir un comando (pd = OFF )

nu

Number, muestra los numeros de linea cando se edita un archivo (pd = OFF)

redraw

Mantiene la pantalla actualizada mientras se hacen cambios (pd = ON ) (evidentemente)

report

Define el tamaño de un cambio de edicion q se muestra por la linea de estado, por ejemplo si tenemos report=3 muestra un mensaje el borrar 3 lineas pero no cuando son menos (pd = 5)

sm

Showmatch muestra un paréntesis abierto cuando se escribe el paréntesis de cierre (util para los programas) (pd = OFF)

smd

Showmode muestra “INPUT”, “REPLACE “,“CHANGE” en el lado derecho de la linea de estado o informacion cuando se activa el comando correspondiente (pd = OFF)

warm

Muestra un mensaje de aviso cuando se intenta salir de vi si se ha modificado algo del archivo y no se ha salvado (pd = ON)

wm=n

wrapmargin define el margen derecho.( n define el tamaño) por ejemplo si tenemos wm=10 cada vez q pongamos mas de 10 caracteres saltara de linea (pd= OFF) para desactivarlo hay q poner wm=0

ws

Word search o wrapscan salta desde el carácter al durante una búsqueda (pd= ON)


Como saber q opciones tenemos activadas?

Para saber q opciones tenemos podemos poner en modo comando la palabra set
Para definir las opciones hay q editar el archivo .exrc en nuestro directorio si lo tenemos , sino se crea y dentro se pone lo q queremos de este modo

set nu smd

nota: tambien se podria usar

set number showmode

nota2: se puede hacer el set tambien desde dentro del vi con el comando se
:se smd ( por ejemplo)
y para desactivar
:se nosmd (creo)
Para no hacerme pesado paso de explicar mas cosas sobre el Vi, en caso de q alguien tenga alguna duda o requiera de explicaciones mas especificas sobre algun comando q lo postee aquí y se intentara responder lo mas rapido possible

Uff q cansancio :P
Pedazo explicación, yo soy de los que usan vi habitualmente (aunque no para ver cualquier archivo que eso es arriesgado y para eso están cat y more) y te agradezco la guía.

Un saludo
Muy bien pensada la guía esta. Estoy de acuerdo que aprender VI es fundamental, hace un tiempo le instalé mandrake a un amigo, pero el driver de nvidia no le funcionaba y las x no arrancaban, asi que tuve que editar el XF86Config, y claro, tuve que hacerlo con el vi, lo bueno es que sabes seguro que tendrá un vi por cojones, y lo malo es que en aquellos tiempos no sabia manejarme por el vi, asi que me las vi negras, y desde entonces estoy practicando con él.

Parece dificil al principio, pero pienso que una persona que aprenda a manejar el VI de cabeza y tenga entrenamiento en ella puede escribir documentos (sobre todo html, programación, latex, etc.) mucho más rápido que con editores visuales, entre otras cosas xq no tienes que apartar las manos del teclado.

Ah! y en Windows tambien existe, de echo es un muy buen port.

PD: ¿Por cierto que leches significa VI? ¿Visual edItor? Siempre me lo he preguntado, antes de eso estaba "ed" que era una acortación de "Editor", ¿pero vi? Me acuerdo que hace bastantes años, cuando oí hablar por primera vez de UNIX en un libro pensaba que se llamaba "editor VI" osea: "Editor 6" pensando que era la sexta versión del editor de UNIX, porque cada vez que hablaba de él se referian a el como "editor VI" y no vi a secas. Era un libro de antes de los 90 sobre el System V, que tiempos aquellos [buenazo] [buenazo]
muy buena explicacion :) la verdad eske saber usar el vi es bastante importante :P
Gracias por las felicitaciones , despues de la currada va bien ver q la a la gente le gusta

:P

respecto Vi Significa Visual, y recibe ese nombre devido a q los editoresa anteriores a el eran orientados a la linea , es decir, como unix se escriba en modo teletipo ( ttyp :P ) solo se podia editar la linea de trabajo.Los creadores de este avance fueron... como no... La Universidad de California en Berkley.

Saludos
respecto Vi Significa Visual, y recibe ese nombre devido a q los editoresa anteriores a el eran orientados a la linea , es decir, como unix se escriba en modo teletipo ( ttyp ) solo se podia editar la linea de trabajo.Los creadores de este avance fueron... como no... La Universidad de California en Berkley.


Berkeley roolz [beer] [beer] [beer] gracias a esta universidad Unix mejoró y mucho respecto al de AT&T y tambien gracias a eso salieron los clones actuales de BSD que incluso usan los de M$ (Hotmail) [poraki] [poraki] en fin, gracias por aclarar la duda.
gracias por el tutorial tio
escufi tio, como te lo curras [oki]

¿seria mucho pedir que tu o alguien lo pusiese en PDF para que pueda ser descargado e impreso? [angelito]

Me ofrezco voluntario si eso, al fin y al cabo no es mas que copiar y pegar.

Saludos y gracias por el tuto! [bye]
Me parece excelente que expliques vi!

Considero que no se es usuario de unix sino se domina vi. :)

En la explicacion escufi se olvido de nombrar una combinacion famosa: "LA Z DEL ZORRO" [+risas] sirve para guardar y salir rapidamente:

Pasamos a modo comando con esc y luego apretamos shift+z+z

practiquisima! pruebenla y ya nunca la dejaran.

salu2[bye]
Escrito originalmente por sergiox


Pasamos a modo comando con esc y luego apretamos shift+z+z


añadido comando. Es q no me he querido exceder mucho con los comandos pero ya pondre mas si se requiere , con los del vim hay un porron :P

saludos
...de verdad q a uds "vi" les parece BIEN??

Oooh

Yo (ocasionalmente) opero en maquinas con unix y/o linux desde hace unos añitos (mi primer contacto con unix fue con un SCO en el 92), y poco mas tarde con un XENIX (unix de MS)...

Pues a mi vi SIEMPRE me ha parecido el editor de texto mas incomodo, impractico, tosco y (al final lo dire) INUTIL que existe. El 2º puesto es para el que hasta llegados los 90 fue el editor de texto oficial de DOS, el EDLIN (otro que tal...)...por cierto yo usaba RPED hasta q llego el EDIT del DOS ;)

Siempre he preferido manejar otro editor de texto, EL QUE SEA pero que permita ESCRIBIR cuatro lineas de una manera facil y logica...en unix existen docenas de alternativas: pico, joe...pq ceñirnos a vi, q es un desarrollo de hace 30 años que nunca se han molestado en mejorar?

Es que algun unix/linux moderno tiene la osadia de presentarse al mundo a estas alturas SOLO con vi como editor de texto en la consola?

joer si es mas comodo el copy con > file del DOS q esa cosa del vi...

Ahora llamadme exaltado antilinuxero si quereis por odiar y mandar a quemar el vi...pero en serio, con cosas como vi linux nunca sera el SO favorito de la mayoria...y es que hoy dia la maxima es "mas facil, mas rapido, mejor"...lo que no tiene NADA que ver con este Vetusto Interface XD

Saludos a todos.

pd: en mi clase del ciclo de sistemas, yo era uno de los dos unicos que llego a enterarse de algo con el vi...no me faltaron ganas...pero habiendo alternativas...porque vi? yo no soy admin profesional en *nix, pero si conozco algunos...y ninguno de ellos usa el vi a no ser que sea ABSOLUTAMENTE E IRREEMPLAZABLEMENTE IMPRESCINDIBLE, lo que solo sucede en un ridiculamente bajo porcentaje de ocasiones ;)
GXY Tranqui tio q no se q te pasa macho [beer] . Vamos a ver linux lleva el vi ( cierto es) como todos los sistemas *nix, pero donde has visto en la explicacion q yo haya dicho q es el unico editor de linux? mira asi a lo bajo creo q en la Mandrake 9 puedes elegir entre 12 editores ( cuando lo instalas) y te aseguro q hay muchos q son como el ultraedit .... lo de haber hecho este mini tutorial del vi es simplemente pq esta en todos los sistemas *nix y es muy ligerito en memoria. Piensa q para acomodarse siempre se esta a tiempo ( me refiero acomodarse a otros editores ) mas vale saber un poco del rudo y complejo vi .


Saludos
Por que vi?

- es rapidisimo.
- abres archivos larguisimos como si nada.
- muchas otras aplicaciones unix usan sus atajos.
- lo puedes usar remotamente.
- siempre esta.
- es ultra estable.
- necesita solo el kernel para funcionar.
- te lo toman fijo en cualquier examen de certificacion unix que rindas.
- es un standard unix.
- es un clasico.

Ademas... conoces alguno mejor? ok, ok, puede ser que los haya. Pero uno ya esta tan acostumbrado a los atajos de vi que es redundante tener que aprender a usar otro. Tiene todo lo que puedas necesitar.

Por cierto... se puede editar un archivo de configuracion desde otra cosa que no sea vi!?!?[qmparto]

salu2[bye]
Personalmente nunca he usado vi, ya que em parece un engorro de editor. Siempre que tengo que editar un archivo uso [tadoramo] PICO [tadoramo] que para mi es el mejor editor y no tengo que hacer peripecias para modificar una linea de texto. ¡Ojo!, no dudo de que vi sea un grandisimo editor, pero practico no se puede decir que lo sea.

Salu2.
No, en efecto, muy practico al principio no es, a mi me sigue pareciendo muy incomodo y sigo usando nano, pero no ceso en mi empeño de aprender vi, ¿porque?

Lo he dicho antes: un experto en vi, puede hacer vilgerías con el teclado. La ventaja es que, por ejemplo, pulsando ESC <:>
borras la línea entera, si tienes mucha práctica eso te cuesta 1.3 seg. de la otra forma tienes que posicionarte al final de la línea y pulsar DEL hasta que se borre la línea, lo cual cuesta bastante más. Vale, es un ejemplo muy sencillo, pero pasemos a otro:

Estas programando en C la última versión del "cocolisto repera 3.0" y decides hacer acopio de las buenas maneras y poner el código con tabuladores para que sea más fácil de leer, ¿cuanto puede costarte con un editor normal? Imaginate: 100 lineas que has de "tabular" a tu gusto, facilmente te vas a las 200 o 250 pulsaciones de TAB más otras cuantas de cursor. ¿y cuanto te cuesta en vi? exactamente esto:

ESC <:> set ai

¿a que merece la pena? [beer] [beer]
Escrito originalmente por khosu
No, en efecto, muy practico al principio no es, a mi me sigue pareciendo muy incomodo y sigo usando nano, pero no ceso en mi empeño de aprender vi, ¿porque?

Lo he dicho antes: un experto en vi, puede hacer vilgerías con el teclado. La ventaja es que, por ejemplo, pulsando ESC <:>
borras la línea entera, si tienes mucha práctica eso te cuesta 1.3 seg. de la otra forma tienes que posicionarte al final de la línea y pulsar DEL hasta que se borre la línea, lo cual cuesta bastante más. Vale, es un ejemplo muy sencillo, pero pasemos a otro:

Estas programando en C la última versión del "cocolisto repera 3.0" y decides hacer acopio de las buenas maneras y poner el código con tabuladores para que sea más fácil de leer, ¿cuanto puede costarte con un editor normal? Imaginate: 100 lineas que has de "tabular" a tu gusto, facilmente te vas a las 200 o 250 pulsaciones de TAB más otras cuantas de cursor. ¿y cuanto te cuesta en vi? exactamente esto:

ESC <:> set ai

¿a que merece la pena? [beer] [beer]


y pq no he puesto las teclas para mover el cursor, pq deduzco q todo el mundo tiene flechitas en el teclado,. pero yo tenia un profesor q era el administrador de los servidores de la Universidad q en mi vida he visto a alguien editar tan rapido como el, imaginad a alguien q sabe un taco de vi y q ademas como ha hecho taquigrafia, no quita las manos de las tipicas teclas, como el se habia aprendido las teclas para mover el cursor, ni tan solo tocaba las flechas era IMPRESIONANTE os lo juro, el ordenador iba de culo para seguirlo a el, en un momento se curraba un script o moificaba un archivo a su antojo y no te daba tiempo ni de ver lo q hacia..... esa es la vision mas increible q recuerdo de alguien escribiendo en un ordenador... de verdad se merecia mi admiracion.


saludos

p.d: Por cierto por si alguien le interesa

----- movimiento de cursor a la derecha (barra espaciadora tb)
----- Movimiento de cursor a la izquierda
----- Movimiento de cursor hacia abajo
----- Movimiento de cursor hacia arriba

(bajar 15 lineas es simplemente <1><5>)
El vi esta muy bien, y es verdad eso de que esté incluido de fijo pase lo que pase es un seguro de vida, pero yo personalmente prefiero pico me parece más intuitivoy más comodo (quizás pork me haya acostumbrado a él) ;)

p.d. un manual muy currado, ya me lo tengo impreso :D gracias!
Escrito originalmente por escufi


y pq no he puesto las teclas para mover el cursor, pq deduzco q todo el mundo tiene flechitas en el teclado,. pero yo tenia un profesor q era el administrador de los servidores de la Universidad q en mi vida he visto a alguien editar tan rapido como el, imaginad a alguien q sabe un taco de vi y q ademas como ha hecho taquigrafia, no quita las manos de las tipicas teclas, como el se habia aprendido las teclas para mover el cursor, ni tan solo tocaba las flechas era IMPRESIONANTE os lo juro, el ordenador iba de culo para seguirlo a el, en un momento se curraba un script o moificaba un archivo a su antojo y no te daba tiempo ni de ver lo q hacia..... esa es la vision mas increible q recuerdo de alguien escribiendo en un ordenador... de verdad se merecia mi admiracion.


saludos



Yo estaba al lado de Escufi viendo a ese profesor que teniamos y la verdad es que no exagera nada, iba mas rapido el que el ordenador, imaginaros tecleaba unas cuantas sentencias, se giraba a hablar con nosotros un momento hasta que el ordenador acabase todo lo que le habia dicho hacer y despues seguia.

IMPRESIONANTE
Escrito originalmente por escufi
GXY Tranqui tio q no se q te pasa macho [beer] . Vamos a ver linux lleva el vi ( cierto es) como todos los sistemas *nix, pero donde has visto en la explicacion q yo haya dicho q es el unico editor de linux? mira asi a lo bajo creo q en la Mandrake 9 puedes elegir entre 12 editores ( cuando lo instalas) y te aseguro q hay muchos q son como el ultraedit .... lo de haber hecho este mini tutorial del vi es simplemente pq esta en todos los sistemas *nix y es muy ligerito en memoria. Piensa q para acomodarse siempre se esta a tiempo ( me refiero acomodarse a otros editores ) mas vale saber un poco del rudo y complejo vi .


Saludos


Sorry por el post...me fui un poco de mis casillas :p pero es q el vi me saca de quicio... [ayay]

y si, el vi tendra un monton de atajos y de historias...y bien manejado debe ser la lexe en verso (como cualquier cosa en *nix, por cierto)...pero la verdad es q la mayoria (99%) de las veces con un "editor normal" q tenga busqueda y copia/pega resuelves tan ricamente...y no te tienes q aprender 109 atajos de teclado.

Ahora bien, si es cierto q alguien q se "precie" de manejar *nix se tiene q manejar ALGO en vi...pq hay sistemas vetustos por ahi que no tienen otra cosa. [reojillo]

En resumen, muy bien por curraros el tuto de vi y tal...pero yo seguire manejando otra cosa siempre que pueda :)

Saludos.
Hombre todo dentro de su contexto, está claro que para editar cosas sencillas no hace falta el vi, es muy recomendable aprender a moverse con él (no hace falta llegar a ser un experto) para que te pueda sacar de un apuro si te ves con varios unixes y no sabes que editores tienen.

Pero sobre todo puede ser interesante para programadores, edición de Latex, de html en código, etc. etc.

Con todo esto, quiero decir, que no tienes porque querer usar vi para todos los propósitos, de echo, la mayoría de la gente no lo hace (excepto Bilo, de la tira es.comp.os.linux claro [Ooooo] ).

En fin, que me enrollo como una persiana, que si algo caracteríza a Linux es su gran cantidad de alternativas, y si no te gusta vi, estás en tu perfecto derecho de no usarlo y usar los cientos de editores en texto o gráfico que lleva Linux.
22 respuestas