2008-12-08

Usar Vim

Sin duda el mejor editor de texto de Linux y sin lugar a duda uno de los mas "odiados" por los novatos, a mi personalmente me saco canas verdes aprender a entenderlo bien, ahora no puedo vivir sin usarlo, es sencillamente ideal te permite realizar cosas que ningún otro editor hace, bueno acá intentare resumir como usarlo para que uno no se enrede tanto, para esto me base en un manual que encontré hace un tiempo en esta URL, además esta en español y en pdf.

Lo primero es explicar que vim tiene 2 estados, uno de inserción y otro de comandos, el de Inserción sirve para insertar, copiar, pegar y modificar el texto, el de Comandos sirve para ejecutar comandos de busqueda, eliminación, copiado, y demás comandos que te puedas imaginar.

Bueno empecemos diciendo que por defecto el vim que biene en Ubuntu no es completo, pero en Debian si esta completo, para solucionar esto o asegurarnos que sea este el que estemos usando lo instalamos de la siguiente forma

root@localhost:~# apt-get install vim

Ahora como asegurarnos que siempre lo vamos a usar, adicionamos la siguiente linea al archivo .bashrc que esta en nuestro directorio, o sea /home/user/.bashrc

alias vi='vim'

acá cada que usemos vi es usar vim en realidad. Bueno ahora como identificamos en que modo de VIM estamos, eso es visual asi quue miremos estas dos imagenes

---------------COMANDO -----------------------------------------INSERCION














Como los diferencias, mira la última linea de la pantalla, esta es la barra de estado, hay siempre nos dira en que linea y columna estamos ubicados y en que modo estamos, si dice --- INSERTAR --- o --- REEMPLAZAR --- estamos en el modo de Inserción, pero si no dice nada estamos en modo de comandos.

Para pasar del modo de comando al modo de inseción basta con digital la tecla "i" o la tecla Insert, y para pasar del modo de inserción al modo de comando basta con dar en la teca ESC.

Ahora antes de usarlo hay que ponerlo de una forma que nos permita identificar cosas facilmente como son palabras claves, posiciones del cursor, numero de fila, resaltar en busquedas, y demás, para esto creamos el archivo .vimrc, en nuestro directorio, de la siguiente forma

root@localhost:~# vi /home/user/.vimrc

Y le adicionamos lo siguiente

"Comentarios van en comillas
"numerar filas
set numer
"resalar resultados de busqueda
set hlsearch
"colocar de colores las palabras claves
syntax on
"ubicarnos con columna y fila
set ruler
" evitar que queden resaltadas busquedas anteriores
nohlsearch
"Usar opciones mas alla de las tradicionales
set nocompatible
"No dejar copias viejas del archivo que estamos editando
set nobackup
"Permitir que las lineas mas largas sean partidas en la pantalla
set wrap

Con estos tendras una presentación y un manejo mucho mas fácil desde el inicio en tu VIM y se vera mas o menos así



Como pueden ver la diferencia es bastante drastica y nos permite muchas facilidades, hasta visuales cuando buscamos algo.

bueno ahora empecemos con lo básico, lo comandos de como movernos, como borrar, como copiar y demás, para eso mira esta lista a continuación

Comando ----------------Significado
h----------Mover el cursor a la izquierda.
j----------Mover el cursor hacia abajo.
k----------Mover el cursor hacia arriba.
l----------Mover el cursor hacia la derecha.
i----------Insertar texto en la posición actual del cursor (Insert), pasando a Modo Inserción.
ESC------Salir del modo inserción y volver a modo comando.
x---------Borrar el caracter bajo el cursor (equivale a la tecla Del/Supr).
J---------Juntar la línea actual con la siguiente (Join), eliminando el retorno de carro entre ellas.
u---------Deshacer la última acción (Undo).
CTRL+R--Rehacer la última acción (Redo).
a----------Insertar texto en la siguiente posición tras el cursor (Append).
o----------Crear una línea vacía, en blanco, bajo la línea actual, y pasar a modo inserción con el cursor posicionado en dicha línea.
O----------Crear una línea vacía, en blanco, sobre la línea actual.
dd----------Borrar la línea actual (sobre la que está el cursor).
yy----------Copiar la línea actual (sobre la que está el cursor).
p----------Pega la línea borrada o copiada anteriormente.


Si adicionas un numero antes de cada uno de estos comandos, este serepetira el numero de veces indicado, así si escribes 10dd borraras las siguientes 10 líneas despúes de la actual inculida esta o si das 10o creas 10 líneas vacias despúes de la actual y quedas en modo de inserción.

Ahora algo fundamental que es la forma de guardar y/o cerrar el archivo que estamos manipuando, para esto usams los siguientes comandos

Comando -------Significado
:w!----------Guardar sin cerrar
:wq!---------Guardar y cerrar
:q!-----------Cerrar sin guardar

Bueno ahora iremos con unos comandos un poco mas dificiles y especiales que nos permiten hacer las cosas repetitivas mucho mas faciles, el primero es el comando "." este repite automticamente el último comando de modificación de texto que ejecutaste, por ejemplo dd, cw, p o cualquier otro que modifique el texto, esto te será muy útil por ejemplo para sustituir palabras, lo cual se hace de la siguiente forma.

Primero la buscas escribiendo en el modo de comando /buscada , el "/" se usa para buscar las palabras, y despúes de esto le das cwreemplazada,el cw es cambiar palabra entonces hay la palabra buscada sera cambiada por reemplazada, ahora para reemplazar todas le das "n" para buscar la siguiente palabra "buscada" y le das "." para cambiarla por la palabra "reemplazada".

Ahora el comando "~", si no sabes como sacar este simbolo en todos los Linux lsa le con la combinación AltGr+4, sirve para cambiar las mayusculas por las minusculas y viceversa, de la letra que este sobre el cursor.

Ahora las busquedas, para que esta busqueda sea aun mas útil de lo que por defecto es le debes dar el comando set hlsearch en el archivo .vimrc, pra que en cada palabra que coincida con la busqueda se marque. Ahora como se busca, de las siguientes formas

Comando -------Significado
/buscada---Marca todas las palabras o fragmentos que concuenrden con lo que este despues del "/"
?buscada---Encuentra la primera vez que aparece la palabra buscada despues della posición del cursor

para poder ir entre uno y otro de los resultados de la busqueda se usan las letras "n" para buscar la inmediatamente posterior y la letra "N" para buscar la inmediatamente anterior.

Y por último veremos otra forma de realizar las sustituciones, ya no por repetición sino por comando, si queremos que sea en todo el texto la modificación usaremos el siguiente comando

:%s/buscada/reemplazada/g

Ahora si deseamos que solo sea entre algunas de las filas colocamos la fila inicial y la fila final antes del comando de la siguinete forma

:100,200s/buscada/reemplazada/g

Ahora si deseamos eliminar las lineas vacías del fichero, sería así

:%g/^$/d

Bueno espero que les sirva y que con esto facilite el uso del mejor editor de texto, se que algunas cosas parecen enredadas pero con la practica todo será realmente fácil.