Usando VIM
¡Primer artículo de la semana del lector! Éste ha sido enviado por Jorge «Koki» (¡gracias!), del blog de elmodem, de recomendada lectura. Se ha modificado ligeramente para incluir hipervínculos a definiciones de Wikipedia y un logo. Documento original en odt aquí.
Vim es un editor de texto en modo consola para sistemas Unix, es una versión mejorada del editor Vi (Vi IMproved). Aunque es algo difícil adaptarse a él al inicio, es bastante potente. En modo gráfico hay distintos editores de texto, algunos con más opciones que otros y siempre es posible lanzar en modo root algún editor de texto con interfaz gráfica, pero vale la pena saber su uso básico por si en alguna oportunidad por andar traveseando en la PC (ya saben, echando a perder se aprende) no podemos ingresar al modo gráfico y tenemos que editar un archivo de texto.
Vim funciona en dos modos (lo que hace que sea confuso al inicio): modo de comandos, que es el que está por defecto al arracar el programa, y el modo de inserción de texto.
Para ingresar a Vim, escribimos en consola vim (¿lógico no?) y nos creará un archivo sin nombre. También podemos abrir un archivo con el comando vim /directorio/nombre_archivo_existente (recuerden que si es que no tenemos los permisos necesarios sobre el archivo no podremos guardar los cambios, a no ser que entremos como root) o crear un archivo nuevo con vim /directorio/nombre_archivo_nuevo.
Se puede probar un excelente tutorial de vim, con ejemplos, escribiendo en consola vimtutor.
Comandos Básicos
Vim tiene bastantes comandos, no traten de aprenderse de memoria todos, con la práctica se habituarán a los que más usen (además, siempre pueden usar vimtutor). Para los comandos, se distinguen mayúsculas de minúsculas.
Como ya dije, al inicio nos encontramos en modo de comandos. Al ingresar a un archivo ya existente, nos desplazamos por él con las flechas direccionales.
:i pasa al modo de inserción de texto. En este modo el programa funciona como cualquier editor de texto normal, para volver al modo de comandos, se pulsa la tecla ESC. Para probar los comandos explicados a continuación, se tiene que estar en modo de comandos (pulsando ESC).
G (o con <SHIFT> + g) nos dirige al final del documento.
gg (pulsando dos veces g) vamos al inicio del documento.
:n <ENTER> mueve el cursor hasta la línea “n” del documento. Otra forma de hacerlo es con n <SHIFT>+g
<CONTROL>+g nos muestra el estado del archivo, su nombre y el número de línea en el que se está.
x borra el caracter que se encuentra en la posición del cursor.
ndd borra “n” líneas desde la posición del cursor, así, si queremos borrar tres líneas, escribimos 3dd. Si se omite el número borrará 1 línea.
ndw borra “n” palabras desde la posición del cursor hacia la derecha. Por ejemplo, si queremos borrar 3 palabras, escribimos: 3dw. Si se omite el número, borrará una palabra.
d$ borrará todas las palabras desde la posición del cursor hasta el final de la línea. Nótese que el símbolo a ingresar es el $ (dólar) así, si es que se está en un teclado en español, se tiene que ingresar d<SHIFT>+4.
cw borra los caracteres hasta el final de la palabra en donde se encuentra el cursor y pasa al modo edición.
c$ borra todas las palabras hasta el final de la línea y pasa al modo edición.
yy copia una línea de texto
p pega la última línea de texto copiada y borrada.u deshace el último comando ejecutado (undo).
r<letra> reemplaza la el caracter sobre el que está el cursor por “letra”.
U deshace los últimos comandos ejecutados en una línea.
<CONTROL>+R rehace los últimos comandos (redo).
/cadena busca “cadena” en el archivo y coloca el cursor en la primera ocurrencia. n realiza nuevamente la búsqueda anterior, moviendo el cursor hasta la siguiente ocurrencia.
?cadena similar al comando anterior, pero busca hacia atrás.
% busca los paréntesis (o corchetes o llaves) de cierre. Así, si es que se está en medio de una oración entre paréntesis, al pulsar % nos llevará al paréntesis de cierre. Es muy útil para programación.
Para reemplazar texto, tenemos algunas opciones:
:s/texto_a_reemplazar/texto_nuevo/ <ENTER> reemplazará la primera aparición de “texto _a_reemplazar” en la línea actual.
:s/texto_a_reemplazar/texto_nuevo/g <ENTER> reemplazará todas las apariciones de “texto _a_reemplazar” en la línea actual.
:#,#s/texto_a_reemplazar/texto_nuevo/g <ENTER> reemplazará todas las apariciones de “texto _a_reemplazar” entre dos líneas. #,# son los números de las dos líneas.
:%s/texto_a_reemplazar/texto_nuevo/g <ENTER> reemplazará todas las apariciones de “texto _a_reemplazar” en todo el documento.
:w guarda el archivo (si es que se tiene los permisos necesarios).
:w nombre_de_archivo guarda el archivo con el nombre dado.
:q sale del editor (siempre que no hayan cambios desde la última vez que se guardó el archivo)
:q! Fuerza la salida así se tengan cambios por guardar.
Es posible ejecutar comandos uno después del otro, por ejemplo:
:wq graba los cambios (w) y sale del editor (q).
No olviden que pueden practicar ingresando desde consola vimtutor
Artículos relacionados:
15 abr 2007 a las 13:02
Felicidades por la iniciativa outime, no esta nada mal, a ver cuantos consignes, ademas esta bien para que se conozcan mas bloggers, el tuyo tiene mucho trafico :D
Y por supuesto felicidades a Koki, no conocía su blog y no esta nada mal. El manual muy bueno.
Un saludo a los dos ;P
16 abr 2007 a las 11:57
Muy buena iniciativa, y el primero manual esta muy bien para tenerlo en la mesa. ;)
16 abr 2007 a las 16:04
Je! Y yo que me creía la hostia por dominar el nano… XD
16 abr 2007 a las 18:50
Y bien, aparte del nano y vim, podemos encontrar otro editor escondido por el sistema? hahah Por que yo solo conocia al primero :D
Buen tutorial, koki :D
17 abr 2007 a las 4:12
GRacias a Rubén por el espacio.
Otro editor que se puede probar es el de Stallman: el GNU Emacs, que es mucho más potente pero con una curva de aprendizaje mayor que el Vim. Yo no lo domino.
17 abr 2007 a las 6:09
Mira tu por donde :D
http://www.genbeta.com/2007/04/17-vimperator-transforma-tu-firefox-para-que-se-parezca-vim
También se puede usar en Firefox.
6 ago 2007 a las 18:19
[...] Usando VIM Movido al nuevo blog! [...]
2 nov 2007 a las 0:09
Buen artículo. Me han encantado las posibilidades para buscar y reemplazar texto :)
2 nov 2007 a las 0:15
[...] conoces nada de este programa y quieres ver un buen artículo que te lo presente rápidamente, mira este post de 120% [...]
6 may 2008 a las 22:55
Otro tip:
:x guarda los cambios y cierra el editor. Es lo mismo que :wq pero más rápido :D