Resumen
Vi fue el primer editor de pantalla completa que existió. Es uno de los programas al que apuntan los detractores de UNIX®, pero también uno de los argumentos principales de sus defensores: si bien es complicado de aprender, también es una herramienta extremadamente potente una vez que uno se acostumbra a usarlo. Con unos pocos tecleos, un usuario de Vi puede mover montañas y, aparte de Emacs, pocos editores de texto pueden decir lo mismo.
La versión provista con Mandrakelinux es de hecho, Vim, por VI iMproved (VI Mejorado), pero lo llamaremos Vi a lo largo de este capítulo.
Si desea aprender más acerca de Vi, puede echar un vistazo a esta Introducción práctica al editor Vi (en inglés) o a la página principal de Vim.
Primero, necesitamos iniciar Vi, lo cual se hace exactamente como con Emacs. Así que, volvamos a nuestros dos archivos e ingresemos:
$ vi archivo1 archivo2 |
En este punto, Usted se encontrará frente a una ventana que se parece a la siguiente:
Ahora Usted está en modo comando frente al primer archivo abierto. En este modo, no puede insertar texto en un archivo. Para hacer esto, debe pasar a modo inserción.
Aquí tiene algunos atajos para insertar texto:
En modo de inserción, Usted verá aparecer la cadena --INSERT-- en la base de la pantalla (de esta forma, Usted sabrá en que modo se encuentra). Este es el único modo que le permitirá insertar texto. Para volver al modo comando, presione la tecla Esc.
En modo de inserción, puede usar las teclas Retroceso y Supr para borrar texto a medida que avanza. Para desplazarse por el texto, tanto en modo comando como en modo inserción, utilice las teclas de las flechas. También hay otras combinaciones de teclas en modo comando, que veremos más adelante.
Usted accede al modo ex presionando la tecla : en modo comando. En la base de la pantalla aparecerá :, y allí se posicionará el cursor. Vi considerará todo lo que Usted ingrese subsecuentemente, hasta la tecla Intro, como un comando ex. Si borra el comando y los : que ingresó, volverá al modo comando y el cursor retornará a su posición original en el texto.
Para grabar los cambios hechos a un archivo, se ingresa la secuencia :w en modo comando. Si desea grabar el contenido del buffer en otro archivo, ingrese :w <nombre_de_archivo>
Para moverse, en el mismo buffer, por entre los archivos cuyos nombres se pasaron en la línea de comandos, teclee :next para moverse al archivo siguiente y :prev para moverse al archivo previo. Puede usar :e <nombre_de_archivo> también, lo cual le permite tanto cambiar al archivo deseado, si es que ya está abierto, como también abrir otro archivo. También puede usar el completado.
Puede tener varios buffers visibles en la pantalla a la vez, como con Emacs. Para esto, use el comando :split.
Para cambiar de buffer, ingrese Ctrl-w j para ir al buffer de abajo o Ctrl-w k para ir al de arriba. También puede usar las teclas de las flechas para arriba y para abajo, en lugar de j o k. El comando :close oculta un buffer, el comando :q lo cierra.
Debe tener presente que si intenta ocultar o cerrar un buffer sin guardar los cambios, el comando no se llevará a cabo y Vi mostrará este mensaje:
No write since last change (use ! to override)
(no se escribió desde el ultimo cambio (use ! para forzar el comando)) En este caso, haga lo que se le dice e ingrese :q! o :close!.
Además de las teclas Retroceso y Supr en modo de edición, Vi tiene muchos otros comandos para borrar, copiar, pegar, y reemplazar texto – en modo comando. Aquí, veremos algunos. Todos los comandos que se muestran aquí están, de hecho, separados en dos partes: la acción a realizar y su efecto. La acción puede ser:
El efecto define al grupo de caracteres sobre los cuales actúa el comando.
h, j, k, l: un caracter a la izquierda, abajo, arriba, a la derecha[13] respectivamente;
e, b, w: hasta el final (respecto al comienzo) de la palabra corriente; del comienzo de la palabra siguiente;
^, 0, $: hasta el primer caracter no blanco de la línea corriente, hasta el comienzo de la línea corriente, hasta el final de la línea corriente;
f <x>: hasta la próxima ocurrencia del caracter <x>; por ejemplo, f e desplaza el cursor hasta la próxima ocurrencia del caracter e;
/ <cadena>, ? <cadena>: hasta la próxima ocurrencia de la cadena o expresión regular <cadena>, y lo mismo yendo hacia atrás en el archivo; por ejemplo, /pepe mueve el cursor hasta la próxima ocurrencia de la palabra pepe;
{, }: hasta el comienzo, hasta el final, del párrafo corriente;
G, H: hasta el final del archivo, hasta el comienzo de la pantalla.
Cada uno de estos caracteres de efecto o comandos de movimiento puede estar precedido por un número de repetición. G referencia al número de línea en el archivo. A partir de esto, Usted puede hacer toda clase de combinaciones.
Si bien muchos de estos comandos no son muy intuitivos, pero como siempre, el mejor método es practicarlos. Aunque puede ver que la expresión “mover montañas con unas pocas teclas” no es tan exagerada.
Vi tiene un comando para copiar texto que ya hemos visto: el comando y. Para cortar texto, simplemente use el comando d. Hay 27 memorias para almacenar texto: una memoria anónima y 26 memorias que llevan el nombre de las 26 letras minúsculas del alfabeto inglés.
Para usar la memoria anónima Usted ingresa el comando “tal cual”. Así, el comando y12w copia a la memoria anónima las 12 palabras que están después del cursor[14]. Si Usted quiere cortar este área, use d12w.
Para usar una de las 26 memorias nombradas, ingrese la secuencia "<x> antes del comando, donde <x> da el nombre de la memoria. Entonces, para copiar las mismas 12 palabras en la memoria k, Usted puede ingresar "ky12w, y "kd12w para cortarlas.
Para pegar el contenido de la memoria anónima, Usted usa los comandos p o P (por Paste, Pegar), para insertar texto después o antes del cursor, respectivamente. Para pegar el contenido de una memoria nombrada, use "<x>p o "<x>P de la misma forma (por ejemplo, "dp pegará el contenido de la memoria d después del cursor)
Para efectuar esta acción, nosotros:
volveremos a copiar las primeras 6 palabras de la oración en la memoria r (por ejemplo): "ry6w [15];
pasaremos al buffer archivo2, que está ubicado abajo: Ctrl-w j;
pegaremos el contenido de la memoria r antes del cursor: "rp.
Obtenemos el resultado esperado, como se muestra en Figura 4.6, “VIM, después de copiar un bloque de texto”.
La búsqueda de texto es muy simple: en modo comando, Usted simplemente ingresa / seguida de la cadena a buscar, y luego presiona la tecla Intro. Por ejemplo, /fiesta buscará la cadena fiesta desde la posición corriente del cursor. Presionar n lo lleva a la próxima ocurrencia, y si llega al final del archivo, la búsqueda comenzará nuevamente por el principio. Para iniciar una búsqueda hacia atrás, use ? en vez de /.
El comando para salir, es :q (de hecho, este comando cierra el buffer activo, como hemos visto, pero si es el único buffer presente, saldrá de Vi). Hay un atajo: la mayoría de las veces, Usted edita un archivo solo. Entonces, para salir utilizará:
Habrá notado que si tiene varios buffers, :wq escribirá el buffer activo y luego lo cerrará.