The Inside Out


Este sitio La web

¿Sufriste un ataque de generosidad y quieres regalarme algo? ¡Gracias! Fíjate en mi lista de deseos en Amazon.

Hai avuto un attacco di generosità e vuoi regalarmi qualcosa? Grazie! Controlla nella mia lista dei desideri su Amazon.

El editor de textos Vim

Vi - texto
El editor de textos Vi es uno de los primeros y más usados en entornos Unix. Su interfaz es legendaria por lo discreta, y puede desesperar a más de un usuario que recién lo conoce. Tal vez le de una idea de su uso el que algunos lo llamen vile (vil). Sin embargo, una vez que aprenda cómo moverse en él, su capacidad de trabajo aumentará enormemente. Su nombre, dicho sea de paso, es abreviado de Visual Interface. Sí, los hackers también gustamos de la ironía. Este programa fue creado por Bill Joy, uno de los hackers creadores de los sistemas operativos BSD, los "primos" de Linux; y luego fundador de Sun Microsystems, famosa empresa de informática.

Vim tiene un tutorial propio, para activarlo abra una consola y use el comando vim tutor. Si desea el tutorial en castellano, copie el archivo /usr/share/vim/tutor/tutor.es a su directorio personal y ábralo con el comando vim ~/tutor.es, o directamente conéctese como root, copie el archivo tutor a tutor.old (por si acaso) y renombre tutor.es como tutor antes de ejecutar el comando mencionado arriba.

La versión actual de Vi, Vim (VI iMproved, Vi Mejorado) tiene dos interfazs, una en modo texto puro (abierta con el comando vi) y otra gráfica, con botones para acciones como abrir, guardar, copiar, etc. (abierta con el comando gvim). Una diferencia fundamental es que, al menos en nuestro caso, la teclas Fin e Inicio no funcionan en la versión de texto puro.

El tutorial le enseñará a moverse por vi en unos 25 o 30 minutos. Nosotros intentaremos darle algunos consejos y trucos básicos sobre el programa para despertar su interés. Por otra parte, si necesita más ayuda, ejecute dentro de vi el comando :help para ver el menú de ayuda.

Uso básico de Vim

Cree con Vi un archivo de texto nuevo desde una consola con el comando vim archivonuevo. Verá una serie de tildes (que indican que esas líneas no contienen nada), y debajo en la última línea, el nombre de archivo y su extensión en líneas y carácteres. Esa última línea sirve para introducir comandos. Aquí ha llegado el momento de explicar algo básico de Vi: hay dos "modos de trabajo" (totalmente separados de si la interfaz es gráfica o no). En el "modo de inserción" (Insert mode) usted puede escribir texto en el archivo. En el "modo normal" (Normal mode) usted puede ejecutar comandos y funciones sobre el texto. Al abrir Vi el modo por defecto es el normal, por lo que lo que escriba se verá en la línea de abajo y se tomará como comandos. Para entrar al modo edición, use la tecla i o Insert (Pulsar Insert otra vez activa "sobreescribir", tenga cuidado). Para salir del modo de inserción pulse Esc.

Inserción de texto

Pulse i entonces, y escriba algunas líneas de texto. Note que en Vi una línea es lo que está delimitado por retornos de carro (pulsaciones de la tecla Enter), no lo que se vea en una línea en la pantalla. Lo notará en Gvim pulsando Fin para desplazarse. Al terminar o cansarse, pulse Esc para volver al modo normal.

Moviéndose y pulsando teclas en modo normal, notará a veces que no sólo la tecla i lo lleva al modo inserción. Entre otras, la tecla a abre la inserción, pero moviendo el cursor un espacio. La tecla o abre una nueva línea debajo del cursor.

Moviéndonos por el texto

Ahora que ha escrito algunas líneas, veamos cómo mover el cursor para editar. Aunque las teclas del cursor funcionan perfectamente, la mejor solución (especialmente si sabe tipear con los 10 dedos) es usar el modo normal y las teclas h, j, k, l (respectivamente Izquierda, Abajo, Arriba, Derecha). Esto puede parecer ridículo, pero están justo al alcance de su mano derecha en la posición normal de tipeo. Muévase por el texto e inserte algo más de texto.

Además de ese movimiento simple, usted puede usar el comando w para desplazarse de una palabra a la siguiente, o b para ir a la anterior. Pero pongamos que usted quiere moverse a una línea determinada dentro del archivo: puede hacerlo con el comando G y el número de la línea, de este modo: 104G lo llevará a la línea de texto 104, si existe. G a secas lo lleva al final del archivo. Para volver al principio, use gg.

Borrar, cortar, copiar y pegar

Para borrar letras en modo normal, use la tecla x (puede por supuesto borrar con Backspace y Supr en modo inserción, pero aquí hablamos de comandos. Puede también borrar una palabra completa con d o desde la posición del cursor hasta el fin de una palabra con dw. Para borrar toda una línea, use dd.

¿Qué pasa si queremos borrar varias líneas? La solución: lleve el cursor a la primera línea, y escriba el número de líneas a borrar antes de escribir dd. Por ejemplo, 11dd borrará 11 líneas hacia abajo, incluyendo la del cursor. Use un número para repetir una acción esa cantidad de veces. 12u deshace los últimos doce cambios, por ejemplo. 10j mueve el cursor 10 líneas hacia abajo.

En realidad, lo que el comando d hace es cortar el texto y ponerlo en un registro. Si ha usado Office XP, recordará que tenía varios (12 si la memoria no nos falla) portapapeles disponibles, en los que almacenar datos para copiar y pegar. Vim hace esto desde hace mucho tiempo, y dispone de más registros: como mínimo, las letras del alfabeto inglés (evite usar la ñ o la ç para esto. O mejor, pruebe). Como decíamos, las operaciones con d equivalen a cortar texto. Es posible también copiar texto, y se hace de la misma manera pero con la tecla y (de yank, "tirar"). Esto copia el texto seleccionado a un registro. Para pegar texto, se usa el comando p.

Ahora que hemos visto cómo cortar, copiar y pegar, introduciremos un tema muy agradable: el modo visual. Usando el comando v puede usar el cursor para seleccionar texto. Simplemente mueva el cursor hasta abarcar todo el texto que quiera, y pulse d o y. Esto también lo sacará del modo visual.

Ahora que hemos visto los conceptos de modo visual y de corte y copia, veamos esos registros de los que hablábamos. Para ser estrictos, los registros no sólo abarcan las letras del alfabeto. Sin embargo, los símbolos y números que pueden usarse como registros tienen fines especiales, que le dejaremos descubrir (ejecute :help reg). Para activar un registro determinado, ejecute "letra. Por ejemplo, "a activa el registro a. Para ver todos los registros ocupados ejecute :reg.

Vimos que puede activar un registro con "letra. Si usa las mayúsculas, el texto que copie o corte se agregará al registro sin sobreescribir lo que había. Ejemplo: si usa "A, el texto que luego corte se agregará al registro a. Si este registro contenía algo, ahora tendrá eso y lo que agregue luego.

Usted puede llamar a un registro antes de copiar, cortar o pegar. El último registro activado permanece, por lo que no debe llamarlo para cortar y luego para pegar; con una vez basta.

Deshacer y Rehacer

Para deshacer una acción (por ejemplo, si fue demasiado lejos usando dd) puede usar el comando u (por undo, deshacer). Obtendrá el mismo efecto usando :undo, pero u es más rápida de escribir. Para rehacer lo deshecho, use la combinación Control + R. Una cosa más: usted puede usar U (en mayúsculas, sí) para deshacer todos los cambios hechos en una línea determinada.

Guardar datos a archivo y salir

Todavía no le hemos dicho cómo salir y guardar datos, algo esencial. Si abrió el archivo como dijimos (vim nombredearchivo en una consola), la solución es el comando ZZ, que cierra Vim y guarda el archivo. Pero si abrió Vim a secas y empezó a escribir texto en un archivo sin nombre, la última línea le protestará "No hay un nombre de fichero". Use entonces :wq archivo (write, quit; escribir, salir) para guardar los datos y salir (obviamente, también puede usar los comandos por separado). Este es otro concepto de Vi: muchos de los comandos se ingresan con dos puntos antes. Note que podría también escribir :write quit archivo para dar la misma orden de manera más legible, pero tomaría más tiempo. Por otro lado, podría usar esta opción para "salvar como...", guardando en otro archivo.

Como ve, cuando está tipeando un simple :w en modo normal guarda sus datos. Si no quiere guardar lo editado (por ejemplo, cuando abre archivos de sistema y no quiere alterar nada) puede salir sin guardar con el comando :q!. El signo de exclamación en un comando permite aplicarlo sin importar que hayan cambios que guardar. Otra posibilidad es usar :e! para volver a abrir el mismo archivo (u otro, si lo especifica luego) desde la última vez que lo guardó. De nuevo: :e! vuelve a cargar la última versión guardada del archivo que tenemos abierto; :e! otroarchivo abre "otroarchivo" (puede ser un archivo nuevo) y descarta todo cambio que hayamos hecho en el archivo actual.

Impresión de textos

Para imprimir un archivo (suponiendo que el sistema de impresión funciona bien) el comando :ha (o :hardcopy) copia el texto del archivo a un archivo temporario Postscript y lo envía a la impresora (Postscript es una tecnología de impresión popular en diseño gráfico). Puede redirigir la salida del comando a un archivo postscript, como si esto fuese el shell: :ha > archivo.ps. Ahora puede abrir ese archivo con Ghostview o KGhostview (o Evince, o GPDF, como prefiera). También puede usar el programa de consola ps2pdf para convertirlo a pdf y distribuirlo: ps2pdf archivo.ps archivo.pdf.

Pueden también imprimirse un número arbitrario de líneas (desde el comienzo del archivo) agregando ese número antes de ha, como ejemplo: :24ha imprime 24 líneas del archivo abierto.

Búsqueda de texto

Una de las funciones más importantes para un programador o un administrador de un sistema Linux, en Vim se hace con el comando /. Por ejemplo:

/rogelio

buscará la palabra "rogelio" entre el cursor y el final del archivo. Si la encontró, y quiere ver otras apariciones, pulse n (next, siguiente). Para buscar entre el cursor y el principio del documento, use ? y luego n:

?rogelio

busca la primera aparición de esa palabra antes del cursor; n busca la anterior a esa, etc. Como puede que el nombre esté en mayúsculas (Rogelio), puede usar :set ignorecase para que las búsquedas no hagan distinción entre mayúsculas y minúsculas, o :set noignorecase para el comportamiento normal. Por último, pongamos que usted está ante la palabra variabledenombrelargo y quiere buscar la siguiente aparición de esa palabra en el texto. Para evitar errores de tipeo, ponga el cursor encima de alguna letra de esa palabra, y use el comando *, que toma la palabra bajo el cursor como patrón de búsqueda.

Con esto usted puede editar perfectamente archivos de configuración. Lo sabemos, porque hasta hace poco, era nuestra única experiencia con Vi y eso nunca nos impidió tener un sistema perfectamente funcionante. Sin embargo, seguiremos con algunos otros conceptos para darle una mejor visión de lo que el editor puede hacer.

Uso intermedio de Vim

Configuración de Vim

Puede configurar vi "al vuelo" con el comando :set opción, o guardar los cambios que quiera editando el archivo ~/.vimrc y escribiendo en él set opción. Un ejemplo: abra un archivo con Vim y ejecute el comando :set number. Eso activa la numeración de líneas, algo muy útil para un programador. Hay montones de opciones posibles, algunas de ellas ya activadas en el programa, otras que puede agregar usted. Como precaución, haga una copia del archivo de configuración: dentro de vim, ejecute lo siguiente:

:e ~/.vimrc

para abrir el archivo,

:w ~/.vimrc-back

para guardarlo con otro nombre, y finalmente

:e ~/.vimrc

para poder, ahora sí, editar con confianza. En caso de errores, use el comando cp ~/.vimrc-back ~/.vimrc para recuperar el archivo original.

En general, cualquier comando con dos puntos que sirva para cambiar el comportamiento de vi debería poder aplicarse en el archivo de configuración simplemente quitándole los dos puntos. El archivo de ayuda de vi (obtenible con el comando :help) tiene bastante información sobre las opciones disponibles.

Búsquedas avanzadas

Ya vimos la manera más básica de hacer búsquedas, simplemente con / y ?. Ahora veamos algunos trucos más.

Supongamos que usted quiere buscar la palabra "cien", pero no las palabras "ciento" o "ciencia". Para hacer la distinción, la búsqueda debe ser: /cien\>. Ese \> quiere decir "aquí termina la palabra que busco". Del mismo modo, podemos delimitar la búsqueda para evitar "conciencia" usando /\<cien\>.

Lo que veremos a continuación no es exclusivo de Vim. Las expresiones regulares son una de las herramientas más importantes en muchos lenguajes de programación, y están disponibles en el shell Bash, en Vim, en otros editores de texto... Una expresión regular es una manera de expresar un patrón de búsqueda. El comando "buscar una cadena de texto que comience con la frase foo y termine con la frase bar" es una expresión regular, o por lo menos podría expresarse con una. En realidad, cualquiera de las búsquedas anteriores usa expresiones regulares (aunque las más simples).

Veamos primero los casos simples: una palabra al principio de una línea puede buscarse con /^palabra, donde el ^ indica "comienzo de la línea". Así mismo, /palabra$ buscamos "palabra" al final de una línea.

El punto equivale al comodín ? del shell: es un reemplazo por cualquier carácter: buscar la expresión r.ma encontraría tanto rama como rema, rima, etc. Incluso encontraría r ma. Ahora, puede ocurrírsele "¿Qué pasa si quiero buscar una frase que contenga un punto?" Bueno, la manera de que se busque un punto (o algún otro caracter, como $ o ^, que forman parte de expresiones y tienen significado aparte, es "desreferenciarlos" con una barra inversa (el caracter \) antes: la expresión /\.com buscará específicamente la frase ".com".

Las expresiones regulares son un tema enorme, y merecen verse aparte. Usar Google puede devolverle varios tutoriales buenos para empaparse más en el tema. El mismo Vi dispone, en la ayuda, de una sección dedicada al manejo de esta poderosa herramienta.

Edición de múltiples archivos a la vez

Dentro de Vim es posible abrir varios archivos y editarlos "a la vez". Para abrir dos archivos en ventanas de buffer distintas, debe usar el comando :split.

Supongamos que editamos el archivo rogelio.txt. Supongamos que de pronto necesitamos agregar algún dato a este archivo, un dato que está en backup.txt. Puede abrir ese archivo en otra ventana de vim con el comando :split backup.txt. También puede abrir una subventana con un archivo nuevo vacío, con el comando :new. Ahora podrá ver ambos archivos y copiar texto de uno a otro. Para moverse de un archivo al otro, puede usar Control + w, w (es decir, primero la combinación Control + w y luego w). Puede cerrar una ventana grabando los datos y usando :close o Control + w, c, o cerrar todas las ventanas excepto la actual con el comando :only (todos los otros archivos deberán estar guardados, si no, use :only! o :wonly).

Puede ver que una de las ventanas es de mayor tamaño que la otra. Para cambiar el tamaño de una ventana, use Control + w y luego + o -.

Por último, si prefiere ventanas verticales, puede usar los comandos :vsplit y :vnew. Abajo mostramos una imagen de Vim editando dos archivos a la vez en ventanas horizontales: Vim - split

Por supuesto, puede abrir la cantidad de ventanas que quiera, pero el texto se hará más difícil de leer.

Además de la comodidad visual de tener dos archivos presentes a la vez, Vim permite tener múltiples archivos abiertos, viendo uno solo por vez. Puede abrirlos directamente desde la línea de comandos, escribiendo vi archivo archivo2 archivo3 o desde Vi, con el comando :hide edit archivo2, lo que oculta el primer archivo. Para abrir varios archivos a la vez, use el comando :args archivo2 archivo3 para abrir otros archivos (esto cierra el archivo abierto).

Una vez que tenga varios archivos abiertos y ocultos, se estará preguntando cómo pasar de uno a otro. Es posible moverse entre los archivos con el comando :next (:wnext para guardar los cambios o :next! para pasar sin guardar) para ir al archivo siguiente, o :previous para ir al archivo anterior. Puede también saltar entre dos archivos con la combinación Control + ^, pero en teclados españoles esto requiere usar la tecla Shift para poder escribir ^, y es prácticamente imposible.

Con esto damos por terminado nuestro tutorial de Vi. Esperamos que le interesen las demás posibilidades de este excelente programa, y le recomendamos que pasee por la ayuda para aprender muchísimo más. En particular, debería visitar el capítulo 10 para aprender a hacer búsqueda y reemplazo, el capítulo 27 para aprender sobre búsquedas y expresiones regulares, y el tutorial si quiere practicar.

Ahora que sabe editar archivos, no tendrá problemas para ver y modificar los archivos de configuración.

Contactarme - Contattarmi

Ningún dato es necesario, salvo antispam y el texto del mensaje.

Nessun dato è necessario, aparte antispam e il testo del messaggio.

Si tienes problemas con el formulario, escríbeme a la dirección de correo en la imagen:

Se hai problemi usando il form, scrivi all'email nell'immagine:

mailto image

Nombre / Nome
Email
Subject
Anti Spam: 2 + 2 =
Texto / Testo