1. Introducción a los entornos de trabajo UNIX

1.9. Acceder al contenido de los ficheros

1.9.2. Edición de archivos con el editor vim

Vim, también conocido como Vi Improved, es un editor programable altamente potente y versátil que se encuentra presente en todos los sistemas GNU/Linux. Una de sus principales características es que dispone de diferentes modos (normal, visual, insert, command-line, select y ex), los cuales se alternan para llevar a cabo distintas operaciones. Esta particularidad lo diferencia de la mayoría de los editores comunes, que suelen tener un solo modo (insert), donde se introducen las órdenes mediante combinaciones de teclas o interfaces gráficas.

La totalidad del control de vim se realiza a través del teclado desde un terminal, lo que lo hace ideal para ser utilizado sin problemas a través de conexiones remotas, ya que no carga el sistema al no desplegar un entorno gráfico. Aprender a utilizar vim es altamente recomendable debido a su capacidad para aumentar la productividad y la eficiencia en la programación.

En este apartado se explican dos modos de vim. Modo de inserción (o entrada) y modo de edición. En el modo de inserción, se puede introducir o ingresar contenido en el archivo. En el modo de edición, puede moverse por el archivo, efectuar acciones como eliminar, copiar, buscar y reemplazar, guardar, etc. Un error común es comenzar a ingresar comandos sin volver primero al modo de edición o comenzar a escribir entrada sin entrar primero en el modo de inserción. Si haces cualquiera de estas cosas, generalmente es fácil recuperarse, así que no te preocupes, luego te explico.

¡Empecemos! Será difícil  demostrar gran parte de esto, así que, en lugar vuestro, citaré lo que quiero que escribáis y tendréis que intentarlo, y vosotros, ver qué sucede.

Primero, generad un nuevo directorio porque se van a crear algunos archivos y esto los mantendrá fuera de tu material normal. Ahora vamos a editar nuestro primer archivo.

$ vi primer-fichero

Cuando ejecutáis este comando, se abre el archivo. Si el archivo no existe, lo creará por vosotros y luego lo abrirá (no es necesario ejecutar touch archivo antes de editarlo). Una vez que ingreséis la orden vi primer fichero, se verá algo como se muestra en la figura 3 (aunque dependiendo del sistema en el que te encuentres, puede verse ligeramente diferente).

Figura 3. Imagen obtenida al ejecutar la orden vi primer-fichero.

Siempre comienzamos en modo de edición, por lo que lo primero que vamos a hacer es cambiar al modo de inserción presionando la letra i. Podéis saber cuándo estáis en modo de inserción porque estará indicado en la esquina inferior izquierda. Ahora escribid algunas líneas de texto y presionad Esc, lo que os llevará de vuelta al modo de edición.

Save y existing

Hay algunas formas de realizar esto. Todas ellas hacen esencialmente lo mismo, así que elegid la que prefiráis. Para todas estas, aseguraos primero de estar en modo de edición.

:ZZ (Nota: en mayúsculas). Guardar y salir.

:q!  Descartar todos los cambios desde el último guardar y salir.

:w Guardar el archivo pero no salir.

:wq Nuevamente, guardar y salir.

La mayoría de los comandos dentro de vi se ejecutan tan pronto como se presiona una secuencia de teclas. Cualquier comando que comience con dos puntos (:) requiere que presionéis <enter> para completar el comando. Guardad y salvad el archivo que tenéis actualmente abierto.

El editor vi permite editar archivos. Si quisiéramos, también podríamos usarlo para ver archivos, pero hay otros más comandos que son un poco más convenientes para ese propósito. Probamos cat, que en realidad significa concatenar y su objetivo principal es unir archivos, pero en su forma más básica es útil para simplemente, como ya se ha visto, ver archivos.

Navegando en un fichero vi

Ahora volvamos al archivo que acabamos de crear e ingresemos más contenido. En el modo de inserción, podéis emplear las teclas de flecha para mover el cursor. Ingresad dos párrafos más de contenido y luego presionad Esc para volver al modo de edición.

A continuación, se muestran algunos de los muchos comandos que podéis ingresar para moveros por el archivo. Jugad con ellos y observad cómo funcionan.

  • Teclas de flecha: mueve el cursor por el archivo.
  • j, k, h, l: mueve el cursor hacia abajo, arriba, izquierda y derecha (similar a las teclas de flecha).
  • ^ (acento circunflejo): mueve el cursor al principio de la línea actual.
  • $ : mueve el cursor al final de la línea actual.
  • nG: mueve el cursor hasta la n-ésima línea (por ejemplo, 5G se mueve a la quinta línea).
  • G: mueve el cursor hasta la última línea.
  • w: mueve el cursor al principio de la siguiente palabra.
  • nw: mueve el cursor n palabras hacia delante (por ejemplo, 2w mueve dos palabras hacia delante).
  • b: mueve el cursor al principio de la palabra anterior.
  • nb: mueve el cursor hacia atrás n
  • { : mueve un párrafo hacia atrás, }: mueve un párrafo hacia delante.

Si escribís :set nu en el modo de edición dentro de vi, se habilitarán los números de línea. Descubriréis que trabajar con archivos es mucho más fácil con los números de línea habilitados.

Eliminando contenido

Acabamos de ver que si queremos movernos dentro de vi, hay muchas opciones disponibles. Varias de ellas también nos permiten procesarlas con un número para mover esa cantidad de veces. Eliminar funciona de manera similar al movimiento; de hecho, varios comandos de eliminación nos permiten incorporar un comando de movimiento para definir lo que se va a eliminar. A continuación, se muestran algunas de las muchas formas en que podemos eliminar contenido dentro de vi. Jugad con ellas ahora (consultad también la sección siguiente sobre cómo deshacer para poder deshacer vuestras eliminaciones).

  • x: elimina un solo carácter.
  • nx: elimina n caracteres (por ejemplo, 5x elimina cinco caracteres).
  • dd: elimina la línea actual.
  • dn: d seguido de un comando de movimiento. Elimina hasta donde el comando de movimiento te llevaría (por ejemplo, d5w significa eliminar cinco palabras).

Deshacer

Deshacer cambios en vi es bastante fácil. Es el carácter u.

  • u: deshace la última acción (puedes seguir presionando u para seguir deshaciendo).
  • U (Nota: mayúscula): deshace todos los cambios en la línea actual.

Llevándolo más allá

Ahora podemos insertar contenido en un archivo, movernos por el archivo, eliminar contenido y deshacerlo, luego guardar y salir. Inmediatamente, podéis hacer ediciones básicas en vi. Sin embargo, esto es solo la introducción de lo que vi puede hacer. Hay más:

  • copiar y pegar
  • buscar y reemplazar
  • buffers
  • marcadores
  • rangos
  • configuraciones

Aunque no es posible dedicarle más tiempo, se recomienda un tutorial para aprender a utilizar vim o bien acceder directamente a su tutorial interactivo a través del comando vimtutor en el terminal.