Apuntes mientras aprendo sobre software y computadoras.

Linux

Guía para empezar con el editor VIM en Linux

Estás leyendo una guía básica para empezar con el editor de textos Vim en Linux.

Escribí este apunte ofreciendo mi propia experiencia, la de un principiante aprendiendo a usar esta herramienta.

Toda la información sirve para Vim y en gran medida para NeoVim, otra alternativa del programa. Pueden existir algunas diferencias entre los mismos, pero en general creo que este material puede ayudar en cualquier caso

Pero mejor voy a empezar por el principio, dando un poco del contexto. Después de todo…

¿Qué es el programa Vim?

Tengo que retroceder un poco en el tiempo. Esiste un programa llamado “Vi”, que fue creado a finales de la década de 1970 para los sistemas Unix.

Vi (un apócope de la palabra “visual”) forma parte del grupo de editores de texto que no agrega formato al material que trabajan. A este tipo de herramientas se las llama “plain text editor”, priorizan el texto, sin enriquecerlo con datos extra.

Vim significa Instrumento visual mejorado ( o visual instrument improved) y es un programa que deriba del Vi original..

Por supuesto, esta es mi explicación básica. Hay muchas ventajas de usar este tipo de programas; además de ser de código abierto los mismos vienen con una gran cantidad de facilidades y atajos para usarlos en muchas tareas distintas.

Si el día de hoy no me encuentro con Vi en en mi sistema operativo, seguro me voy a encontrar con Vim o con NeoVim, las nueva versiones ampliadas.

Vim es fácil de abrir, difícil de cerrar

No voy a mentir: al principio Vim es confuso. Y sin embargo… ¿Qué puede haber de confuso en un programa que solamente espera trabajar con texto?

Cuando abrí Vim por primera vez, ni siquiera pude utilizarlo. Se supone que es para trabajar con texto, pero ninguna tecla parecía funcionar como corresponde.

Entonces quise cerrarlo. Y lo peor es que no conocía como cerrarlo, hasta eso es difícil al principio.

Cada tecla que apretaba causaba efectos inesperados. En lugar de escribir borraba. Cuando trataba de borrar escribía. La confusión aumentaba. Pero como dije… tampoco sabia en que forma cerrarlo.

Directamente salí de la terminal, aunque no fue la forma más elegante de terminar el programa.

Se trata de uno de esas aplicaciones donde la práctica y la costumbre ayudan mucho a entender lo que ocurre.

Es muy dificil abrir Vim y empezar a trabajar sin ninguna experiencia.

Un editor de texto, muchos modos de uso

Vim tiene dos modos distintos para trabajar con la aplicación. Estos dos modos son fundamentales y creo que es lo más importante saber antes de empezar.

De hecho toda mi confusión anterior se explica porque no conocía sobre estos dos modos de usar el programa.

Primero: ingresar texto.

Para ingresar texto en un nuevo archivo simplemente hay que presionar i en el teclado y comenzar a escribir.

Esto activa el modo de edición o inserción (insertion mode), toda la edición de texto propiamente dicha se hace en este modo.

Por otra parte la tecla Esc (Escape) me hace salir del modo de edición y me habilita el modo de comandos.

En este otro modo se hace todo lo relacionado con guardar archivos, buscar, borrar de manera avanzada y muchas cosas más.

Antes de escribir un comando tenemos que apretar la tecla : en el teclado.

Al hacerlo vamos a ver : en la parte inferior izquierda de la pantalla, ahora agregamos la sintaxis del comando, y le damos Enter para que tenga efecto. Los dos puntos indican que vamos a ingresar un comando.

Esto de cambiar entre modos es muy importante. La forma en que se “controla” el editor de texto en cada modo cambia completamente.

Contemplar los distintos modos de trabajo

Por ejemplo, en modo edición podemos borrar el texto de una letra a la vez, usando la tecla backspace. Del mismo modo que lo hacemos en Word o en LibreOffice, nada nuevo.

Pero en modo de comando si apretamos backspace no borramos nada, ni una letra de nuestro texto. Pero si borramos el texto de los comandos que escribimos en la parte inferior de la pantalla. Entonces si queremos borrar dentro del archivo hay que ingresar un comando.

Al principio cuesta acostumbrarse, pero al final podemos borrar más rápido, no solamente una letra por vez.

El potencial de saltar entre modos esta en ganar velocidad y versatilidad. Son distintas herramientas para llevar adelante lo que nos proponemos.

Esto de los modos no termina en esto, vim incluye varios modos más. Entre ellos: modo visual, ex y terminal-job.

Todavía nunca utilicé esos modos extra, por lo que poco puedo decir de lo que hace cada uno de ellos. Y me quedo corto, creo que en total son unas 14 formas distintas de interactuar con el texto.

Es fácil notar que esta herramienta tiene muchas opciones para ofrecernos al intervenir un archivo.

Empezar con el editor VIM en Linux

Crear un archivo con vim

Voy a crear un documento llamado ensayo.txt.Para esto la sintaxis en la terminal de comandos es:

vim ensayo.txt

Por supuesto, también puedo abrir archivos de texto ya existentes con vim.

Digamos que tengo el archivo novela.txt en una carpeta y quiero abrilo. Utilizo entonces el comando:

vim novela.txt

Con esto abro el texto ya existente de forma directa. Basicamente si el archivo existe lo abre y si no existe lo crea en el directorio en el cual me encuentro trabajando.

También puedi escribir en la terminal:

vim

Y empiezo a trabajar entonces en un documento desde cero, para darle luego nombre y extensión.

Tengo que notar un detalle: vim no se abre en una “ventana independiente”, vim se abre ocupando el espacio de la terminal.

Esto es importante. A diferencia de otros editores de texto con una interfaz gráfica, vim utiliza la misma lógica de la terminal. Por eso voy a interactuar con el editor de texto siempre a través del teclado, utilizando comandos con distintos efectos.

Pero volvamos al ejemplo anterior, al archivo ensayo.txt.

Lo creamos y presionamos i para entrar en modo de edición. Ahora escribimos algo, para tener material de escritura. En mi caso voy a poner algo original como:

Este es un texto de prueba.
Espero que ocupe más de dos renglones.
Como resumen, este es un texto de prueba para trabajar con vim.

Ahora digamos que queremos guardarlo. Para eso salimos del modo de edición y entramos en el modo de comandos. Para eso apretamos Esc, como vimos antes.

Con el comando

:w

Le damos Enter y listo, guardamos el texto.

¿Donde se guarda el texto?

El archivo se guarda en el directorio donde estabas trabajando. Si abriste vim cuando la terminal esta abierta en la carpeta imágenes, el texto se guarda en la carpeta imágenes.

Ahora, si queremos guardar y salir del documento la sintaxis del comando es

:wq

Para salir del documento y volver a la terminal sin guardar los cambios hacemos

:q

Hay que tener en cuenta que si no habíamos grabado el documento con anterioridad, VI nos va a visar que si salimos los cambios van a perderse, preguntándonos si realmente queremos salir o continuar.

Si queremos salir directamente sin ninguna pregunta, el comando es:

:q!

Si lo pensamos usando un poco del idioma ingles todos estos comandos tienen sentido. De esta forma entendemos que q es por quit (abandonar o salir).

De hecho podríamos salir del programa escribiendo directamente el comando

:quit

Pero se utiliza :q para ahorrar letras.

Saber esto sirve para que al menos comprendamos de donde viene cada uno de los comandos, al menos los más básicos. No siempre, pero en algunos casos puede servir. Si lo pensamos de este modo el aprendizaje no parece tan confuso, podemos intuir que hace cada comando si no lo entendemos como letras elegidas al azar.

Comandos más comunes en vim

Lo que sigue es un breve apunte recopilando los comandos más comunes para trabajar con archivos en vim.

ComandoResultado
:e nombre de archivoAbre un archivo diferente. Si presionás la tecla Tab el programa te va a mostrar que otros archivos para abrir encontrás en esa carpeta.
:wGuarda los cambios en el archivo. Si querés guardarlo con un nombre noevo o diferente, ponelo al final del comando
:qSalir de Vim. Si no guardaste con anterioridad, te va a avisar que te falta hacerlo
:q!Salís del programa directamente, sin opción para guardar.
:wqGuardar y luego salir.
: xGuardar y salir. Pero guarda solamente si hiciste algún cambio, de otro modo sale directamente sin guardar. Posiblemente el modo más rápido para salir de vim.

Movernos en vim

Movernos por el texto en vim no es igual que en la mayoría de los editores de textos, y ciertamente no es igual que en los editores visuales. Las flechas del teclado no siempre van a llevarnos a donde queremos.

Las teclas que necesitamos para movernos son k (hacia arriba), j (hacia abajo), h (hacia la izquierda) , l (hacia la derecha).

Para movernos un número determinado de letras a la derecha o a la izquierda, podemos usar el siguiente comando. Digamos, 3 letras a la izquierda:

3h

O tal vez 3 lineas hacia arriba:

2k

Como si se tratase de un gran tablero, podemos cuanto movernos hacia cada lado.

Para que tengas como resumen, esta es la lista de movimientos que podes hacer en el modo de comando:

ComandoMueve el cursor…
j
flecha arriba
una linea hacia arriba.
k
flecha abajo
una linea hacia abajo.
l
flecha derecha
un espacio a la derecha.
h
flecha izquierda
un espacio a la izquierda.
eal final de la palabra.
Eal espacio vació entre dos palabras.
bal principio de la palabra.
Bal principio del espacio vació entre dos palabras.
0al principio de una linea.
^al primer espacio ocupado de una linea.
$al final de la linea.
HA la primera linea en la pantalla.
MA la linea en la mitad de la pantalla.
LA la última linea de la pantalla.
:nSalta a la linea número “n”. Por ejemplo, :15 va a la linea núm 15.

Borrar y modificar texto en Vim

Si queremos borrar una linea entera, ponemos el cursor detrás de la linea que queremos borrar y usamos el comando:

:dd

Si queremos borrar múltiples oraciones, agregamos el numero de lineas delante del comando. Digamos que queremos borrar 5 lineas, el comando quedaría como:

:5dd

Como resultado del comando vamos a borrar los cinco renglones de texto por detrás del cursor.

Como apunte, estos son otros comandos para borrar texto en vim.

Comando Resultado
iInsertar texto delante del cursor.
IInsertar texto al principio de la linea donde nos encontramos.
aAgregar texto después del cursor.
AAgregar texto al final de la linea en la que nos encontramos.
oAbre una nueva linea al final del texto y nos permite escribir.
OAbre una linea en la parte superior del texto y nos permite escribir.
CBorrar el resto de la linea donde nos encontramos
rSobre escribir un carácter. Luego vuelve al modo de comandos.
REntra en modo de edición, pero reemplaza caracteres en lugar de agregar nuevos.
EscSalir del modo de edición para entrar en modo de comandos.
xBorra caracteres por detrás del cursor.
XBorra caracteres por delante del cursor.
dd
:d
Borra la linea donde nos encontramos

Buscar en vim

Pensemos que necesitamos encontrar una palabra en el texto. La palabra para buscar en nuestro texto de ejemplo es prueba. El comando nos queda:

/prueba/

Podemos buscar una palabra al comenzarla y terminarla con la tecla /. Es posible buscar la próxima coincidencia en el archivo presionando n y con N podemos movernos a la coincidencia anterior.

También podemos conocer por ejemplo el número de linea en el que se encuentra el cursor. Para eso escribimos el comando:

:set number

y para dejar de ver el número de linea escribimos:

:set nonumber

¿Cómo hacer y deshacer en vim?

Lo más importante para el final. En vim no tenemos Ctrl + Z para deshacer. Pero tenemos comandos equivalentes para ingresar en el modo de comandos:

uDeshacer la última acción.
UDeshacer todos los últimos cambios hechos en el texto.
Ctrl + rRehacer el ultimo cambio deshecho.

Conclusión:

Vim es confuso cuando empezamos a usarlo. Luego, cuando tenemos más practica, notamos que sigue siendo confuso.

Puede hacer de todo un poco, por ejemplo encriptar los documentos que editamos en su interior.

Con un poco más de practica empezamos a conocer como navegar sus comandos, y usarlo se vuelve relativamente más sencillo. Es difícil desprenderse de años de usar un procesador de textos visual, que depende en gran medidas del mouse.

De algún modo tomar la costumbre de usar vi es casi como un hobbie o un deporte en si mismo. Es útil de conocer, y no esta de más abrirlo de vez en cuando para entenderlo.

¿Utilizás vim? ¿O alguna otra alternativa ?¿Se te ocurre alguna idea para mejorar este apunte? Cualquier idea que tengas, me gustaría leerla en los comentarios.

Recursos:

Leave a Reply