RAFA !!
Opciones Curso Básico de Linux

vi

VI es un editor de texto visual, de pantalla completa, basado en el editor de línea ex. Es un editor poco intuitivo y con mala prensa entre los estudiantes que dan sus primeros pasos en UNIX/Linux, pero por otra parte es el editor favorito de los usuarios avanzados y de muchos programadores. Es además un editor que se puede encontrar en cualquier sistema UNIX, desde antiguas estaciones Sun Solaris o HP-UX hasta las más recientes distribuciones de GNU/Linux o FreeBSD, OpenBSD, etc. VI es además un editor muy potente, que permite hacer complicadas operaciones en grandes ficheros con unos pocos comandos, por lo que su aprendizaje puede ahorrarnos mucho tiempo. Otra ventaja de VI es que al ser tan corriente suele encontrarse incluso en disquetes de rescate. Lógicamente poco se puede rescatar si no se sabe manejar el único editor disponible en un momento de emergencia. Pero el manejo de VI es realmente incómodo si nos enfrentamos a la versión clásica. Por ejemplo no podemos usar los cursores para movernos por el texto, debemos pasar al llamado "modo comando" y utilizar letras para movernos.

En este curso utilizaremos el editor VIM.VIM significa "Vi IMproved" (VI Mejorado"), y como su nombre indica es un clon (muy) mejorado del clásico editor VI.VIM es bastante más amigable que VI, ya que permite un uso más intuitivo (p.ej. los cursores y otras teclas para moverse).

Lo primero que debe aprenderse con VIM es la filosofía de los dos modos de trabajo: el modo comando y el modo edición. El modo comando se utiliza sólamente para dar órdenes al editor, decirles que haga cosas como borrar una línea, buscar un patrón, ir a una determinada línea, guardar el fichero, salir, etc. El modo edición se utiliza sólamente para escribir texto en el fichero. Es muy importante familiarizarse con esta filosofía de funcionamiento, ya que resulta imprescindible para cualquier operación que se quiera realizar con VIM.

Para ejecutar este editor el comando es:


   $ vi


Aunque conserva el nombre de VI estamos trabajando con VIM. Este comando admite varias opciones que se le pueden pasar como parámetros, p.ej. el nombre del fichero que queremos editar:


   $ vi fichero


VIM comienza siempre en modo comando, preparado para realizar operaciones sobre el fichero. Una de estas operaciones es pasar al modo edición pulsando la tecla i (Insertar). Para pasar del modo edición al como comando basta con pulsar la tecla de escape, que llamaremos <ESC>. A continuación vamos a editar un pequeño fichero de prueba para familiarizarnos con sus comandos básicos.

Comenzamos invocando al editor desde la línea de comandos:


   $ vi prueba.txt


Veremos que en la última línea de la consola aparece lo siguiente:


"prueba.txt" [New File]                                        0,0-1 All


Esta línea es la barra de estado del editor. Es aquí donde teclearemos algunos comandos y donde aparecerá cierta información como, como el modo en el que estamos, la línea y columna en la que estamos, el porcentaje del documento en el que estamos, etc.

A continuación pulsamos la tecla i para pasar al modo edición. Observamos que la barra de estado se muestra diferente:


-- INSERT --                                                     0,1 All


Tecleamos por ejemplo lo siguiente:


 Lo pequeño es bello.  

Cuando tenemos algo escrito, pulsamos <ESC> para pasar al modo comando. Entonces tecleamos la orden :w y pulsamos <Enter>. Veremos como la orden :w aparece en la barra de estado mientras la tecleamos, y luego al ejecutarla se muestra información sobre el resultado, en este caso información sobre el fichero que acabamos de guardar.


"prueba.txt" [New] 1L, 21C written                              1,20 All


Pasamos nuevamente al modo edición pulsando a (observamos la diferencia con pulsar i) y continuamos escribiendo:


   ---
Lo pequeño es bello.
---
La medida de programar es programar sin medida.
---
Software is like sex, it's better when it's free.
---


Observamos como podemos movernos libremente por el texto en modo edición utilizando los cursores, las teclas de Inicio, Fin, Av. Pag, Re. Pag., etc. Esto no puede hacerse en el VI clásico. Volvemos a guardar el fichero con la orden :w.

Ahora pensemos que queremos eliminar esas líneas de tres guiones y cambiarlas por líneas de cinco asteriscos. Pasamos a modo comando, situamos el cursor en una de esas línas y pulsamos dd. Veremos como la línea entera desaparece. Repetimos lo mismo con las otras líneas. Ahora nos situamos en la primera línea y pasamos a modo edición, escribimos cinco asteriscos y pulsamos <Enter>. Volvemos al modo comando, situamos el cursor en la nueva línea de asteriscos y pulsamos de nuevo dd, vemos como la línea desaparece. Situamos el cursor en el principio de la línea y pulsamos P, vemos como la línea que habíamos borrado se inserta antes del cursor. Si situamos el cursor al principio de la tercera línea y pulsamos p vemos como la línea se inserta después del cursor. Añadimos las restantes líneas de asteriscos donde estaban las de guiones.

Para deshacer cualquier operación realizada pulsamos en modo comando la tecla u. Para salir del editor sin guardar el fichero se usa la orden :q!. Esta operación se suele realizar con mucha frecuencia al principio, cuando se comete algún error grave como teclear una palabra sin pasar al modo edición. En el modo comando cada tecla tiene su función, y es diferente además si está en mayúsculas que si está en minúsculas. Una regla de oro con VIM es: cuando no se sabe con qué comando se hace algo, no probar teclas al azar. Y por supuesto, cuando se está editando algo importante guardar el fichero cada con frecuencia con la orden :w, sobretodo en las primeras semanas de uso.

Con estos pocos comandos es suficiente para la edición básica de textos y programas. En la tabla 1 se resumen estos y otros comandos:


Comando Descripción
<ESC> Mientras se teclea un comando, lo cancela
i Inserta en la posición del cursor (pasa a modo comando)
a Inserta tras la posición del cursor (pasa a modo comando)
I Inserta al inicio de la línea (pasa a modo comando)
A Inserta al final de la línea (pasa a modo comando)
x Borra un caracter
r Reemplaza un carater
u Deshace la última operación realizada (se puede repetir paradeshacer varias operaciones)
U Deshace los cambios efectuados sobre la línea actual
:q Salir del editor
:x Salir del editor guardando el fichero
:q! Salir del editor sin guardar el fichero
:w Guardar el fichero
:w nombrefichero Guardar el fichero con nombre nombrefichero
nG Ir a la línea n
Ir al final del fichero
v Activa el modo de selección (utiliza los cursores paraseleccionar texto
y Copia en memoria (buffer) el texto seleccionado
d Borra el texto seleccionado, y lo copia en memoria (buffer)
p Pega el texto copiado en memoria, tras la posición del cursor
P Pega el texto copiado en memoria, en la posición del cursor
:syntax on Activa el coloreado de sintaxis
:syntax off Desactiva el coloreado de sintaxis
/palabra Busca la cadena palabra hacia adelante
?palabra Busca la cadena palabra hacia atrás
n Muestra la siguiente conicidencia de la última búsqueda
Comandos básicos del VI.