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. La escribí ofreciendo mi punto de vista, el de un principiante con poca experiencia aprendiendo a usar el programa.

Pero mejor voy a empezar por el principio, dando un poco del contexto. Después de todo ¿Qué es Vi?

Vi (visual) es un editor de textos común dentro del sistema GNU/Linux. Es tan común que prácticamente todas (por no decir que todas) las versiones de Linux vienen con alguna variante de vi instaladas.

Vi es un editor que utiliza muy poco recursos, y que fue creado a finales de la década de 1970 para los sistemas Unix.

Por lo general se utiliza este programa para editar archivos de configuración. También para programar y escribir código de computadoras. Pero se puede usar para crear toda clase de texto.

No es un clásico editor de textos como por ejemplo Writer de LibreOffice. En un editor de texto “clásico”, el texto es creado pensando en su lectura. Se le da formato por medio de interlineado o subrayados, por poner algún ejemplo.

Todo eso le agrega información extra al documento, una información que afectaría su correcto funcionamiento si por ejemplo se trata de un lenguaje de programación.

Vi (y sus derivados) forma parte del grupo de editores de texto que no agrega formato. Se los llama “plain text editor”, editan texto básico. La función de este grupo de programas es la de priorizar el texto, sin enriquecerlo con datos extra.

Por supuesto, esta es mi explicación básica. Hay otras ventajas de usar este tipo de programas, ya que vienen con una gran cantidad de facilidades y atajos.

Otros ejemplos de software similar: el bloc de notas y Nano.

Si el día de hoy no te encontrás con vi en la distribución de Linux que utilizás, seguro te vas a encontrar con vim, la nueva versión mejorada.

Vim significa Instrumento visual mejorado ( o visual instrument improved).

Pero en general la mayoría de los comandos básicos son iguales en cualquiera de sus versiones. Esta breve guía introductoria puede servir en los diferentes casos.

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

No voy a mentir: a primera vista vim es confuso. Y sin embargo ¿Qué puede haber de difícil en un programa que solamente espera que agreguemos 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 entenderla.

Tengan en cuenta que realmente no conozco el editor en profundidad. De momento recuerdo nada más las cosas fundamentales y eso me ayuda mucho cuando lo abro. Ahora solamente me desespera una de cada dos veces.

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

Vamos a crear un documento llamado ensayo.txt.Para esto la sintaxis en la terminal de Linux es

vim ensayo.txt

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

Digamos que tenemos el archivo novela.txt en una carpeta y queremos abrilo. Usamos en la terminal el comando:

vim novela.txt

Con esto abrimos el texto ya existente de forma directa.

También podemos escribir en la terminal

vim

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

Vamos a notar que 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 interactuamos 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:

Dejar una respuesta