El editor vi es lo que se conoce como un editor de pantalla, donde uno apenas realiza los cambios en el archivo que se está editando, los visualiza. Los sistemas basados en UNIX en general traen consigo instalados varios editores de texto, y vi es uno de los más conocidos y accesibles, y es por eso que conocer al menos los rudimentos de este editor es muy conveniente.
Quizás al usuario novato o venido de otros entornos diferentes a UNIX le parezca un tanto extraño el uso de este editor, ya que no utiliza menús desplegables, ni teclas de función convencionales. Sin embargo, vi es un editor de texto extremadamente potente, cuyo manejo con la práctica permite realizar tareas avanzadas de edición muy rápidamente.
Para hacer uso de este editor, sólo se ejecuta pasándole como argumento el nombre del archivo a editar:
$ vi <nombre_de_archivo> |
Básicamente, vi posee dos modos de funcionamiento: el modo de inserción y el modo de comandos. Apenas se carga vi, el editor se encuentra en modo de comandos, es decir, que el teclado no está activado para recibir texto y agregarlo al archivo, sino que cada tecla del teclado corresponde a un comando del editor. Más adelante se listarán los comandos más comúnmente utilizados. Ahora se verán los conceptos para utilizarlos.
Para ingresar al modo de inserción, sólo es necesario presionar la tecla Insert del teclado. Luego ya es posible ingresar texto normalmente, como se puede observar en la figura Figura 1. vi en modo inserción. Para volver al modo de comandos, basta con presionar la tecla Esc.
En modo de comandos, se debe tener en cuenta que generalmente el comando que se ejecuta se aplica a la línea o carácter donde se encuentre el cursor. Así por ejemplo, si se presiona la tecla x[24], se borra el carácter donde el cursor está posicionado. Otro ejemplo es, si se presiona 2 veces consecutivas la tecla d, se eliminará la línea completa donde se encuentre el cursor.
Además del modo de comandos normal que posee vi, donde no es necesario presionar la tecla Enter para ejecutar comandos, existe otra manera de ejecutarlos: vi utiliza detrás de cámaras el editor de línea ex. Muchos de los comandos que se necesitan, se ejecutan a través de ex. Para activar el modo de comandos de este editor de línea, se presiona la tecla : y luego se escribe el comando, seguido de Enter, como veremos más adelante. Como ejemplo se puede dar uno muy interesante: para salir de vi sin grabar en disco se debe escribir :q! seguido de la tecla Enter.
Una particularidad que posee vi es la de poder hacer repeticiones de comandos. Si se escribe un número (en modo de comandos, obviamente) inmediatamente seguido de un comando, este comando se ejecutará la cantidad de veces que se le haya especificado. Un ejemplo práctico de esto es que si se necesita eliminar 3 líneas de texto, con el comando 3dd se puede realizar en vez de ejecutar dd 3 veces.
A continuación se listan los comandos más comúnmente utilizados:
Ingresar al modo inserción.
Ingresar al modo inserción (reemplazo).
Reemplazar hasta el final de palabra.
Borrar desde el cursos hasta el final de la línea.
Salir de vi grabando los cambios.
Ir al fin de línea. Es equivalente a la tecla Fin.
Ir al comienzo de línea. Es equivalente a la tecla Inicio.
Cortar línea al portapapeles (también se usa para borrar).
Copiar la línea actual al portapapeles.
Pegar el contenido del portapapeles a la derecha del cursor.
Pegar el contenido del portapapeles a la izquiera del cursor.
Comenzar la edición abajo del cursor.
Comenzar la edición arriba del cursor.
Comenzar la edición a la derecha del cursor.
Además, los comandos de ex más comúnmente utilizados son:
Salir de vi grabando los cambios.
Grabar los cambios sin salir.
Buscar “cadena1” y reemplazarla por “cadena2” desde la línea número “n” hasta la línea número “m” (se puede escribir “$” para hacer referencia al final del archivo).
Salir sin grabar los cambios.
Como comando adicional, es importante nombrar al comando de búsqueda. Éste se ejecuta presionando la tecla / seguida de la cadena de texto a buscar, y Enter para confirmar. El cursor se posicionará en la primera ocurrencia de la cadena a buscar. Presionando n se buscará la siguiente ocurrencia de la búsqueda.
Ejemplo 26. Búsqueda y reemplazo en vi
Una tarea que quizás parezca complicada es la de buscar y reemplazar, por lo que se presenta un ejemplo aclaratorio. Supóngase el caso de Figura 2. Comando de buscar y reemplazar en vi. Se puede observar que se quiere reemplazar desde la línea 1 hasta el final del archivo todas las ocurrencias de “vi” por “emacs”[25]. El resultado se puede observar en Figura 3. Resultado del reemplazo en vi.
Como se ve, se han reemplazado todas las ocurrencias de la cadena “vi”. Esto a veces no es lo correcto, como puede observarse.
Ejemplo 27. Repetición de comandos en vi
Supóngase que se tiene un párrafo de 10 líneas en un texto que se debe mover a otro sitio del archivo. Una solución no muy óptima es borrar las líneas y volver a escribirlas donde corresponde; pero mejor aún es cortar esas 10 líneas y pegarlas en el nuevo sitio. Para ello, el cursor debe estar posicionado en la primer línea del párrafo. Luego ejecutar el comando 10dd, posicionar el cursor en el lugar donde debe ir el párrafo y ejecutar el comando p. ¡Así de fácil!