Introducción al editor de textos vi El editor vi es lo que se conoce como un editor de pantalla. Los sistemas basados en UNIX (como GNU/Linux) en general traen consigo instalados varios editores de texto y vi es uno de los más conocidos y accesibles. vi no utiliza menús desplegables, ni teclas de función convencionales. Sin embargo, vi es un editor de textos 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 necesita pasarle como argumento el nombre del archivo a editar. La sintaxis es: $ 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). Modos de trabajo de vi 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 1. Para volver al modo de comandos, basta con presionar la tecla Esc. Figura 1: vi en modo inserción. 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 x1, 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. 1 Siempre se debe tener en cuenta que las mayúsculas se diferencian de las minúsculas. Es un error muy común tener el bloqueo de mayúsculas activado (haber presionado la tecla bloq mayús). 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 la tecla Enter. Por ejemplo, para salir de vi sin guardar en disco el archivo que se está editando, 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, por supuesto) inmediatamente seguido de un comando, este comando se ejecutará la cantidad de veces que se le haya especificado. Por ejemplo, si se necesita eliminar 3 líneas de texto con el comando 3dd se puede realizar, en lugar de ejecutar dd 3 veces. A continuación se listan los comandos más comúnmente utilizados: Teclas Comando i Ingresar al modo inserción. r Ingresar al modo inserción (reemplazo). cw Reemplazar hasta el final de la palabra. D Borrar desde el cursor hasta el final de la línea. ZZ Salir de vi grabando los cambios. $ Ir al final de la línea. Equivalente a la tecla Fin. ^ Ir al comienzo de la línea. Equivalente a la tecla Inicio. dd Cortar línea al portapapeles (también se usa para borrar). Y Copiar la línea actual al portapapeles. p Pegar el contenido del portapapeles a la derecha del cursor. P Pegar el contenido del portapapeles a la izquierda del cursor. o Comenzar la edición abajo del cursor. O Comenzar la edición arriba del cursor. a Comenzar la edición a la derecha del cursor. Además, los comandos de ex más comúnmente utilizados son: Teclas Comando :wq Salir de vi grabando los cambios. :w Grabar los cambios sin salir. :n,m s/texto1/texto2/g :q! Buscar texto1 y reemplazarlo por texto2 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 guardar 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. 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 la Figura 2. Se puede observar que se quiere reemplazar desde la línea 1 hasta el final del archivo todas las ocurrencias de vi por emacs2. El resultado se puede observar en la Figura 3. Figura 2: Comando de buscar y reemplazar en vi. Figura 3: Resultado del reemplazo en vi. 2 Emacs es otro editor de textos muy utilizado en Linux. Como se ve, se han reemplazado todas las ocurrencias de la cadena vi. Esto a veces no es lo correcto, como puede observarse. Repetición de comandos en vi Suponga 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 volverlas a escribir donde corresponde; pero mejor aún es cortar esas 10 líneas y pegarlas en el sitio nuevo. Para ello, el cursor debe estar posicionado en la primera línea del párrafo. Posteriormente, se debe teclear el comando 10dd, posicionar el cursor en el lugar donde debe ir el párrafo y, finalmente, teclear el comando p. ¡Así de fácil!