miércoles, 25 de febrero de 2009

HAL y vim (I)

Una de las tareas básicas que realiza ordinariamente el usuario de una computadora es escribir textos. En este sentido, la computadora ha aliviado hasta límites insospechados el trabajo antaño penoso del mecanógrafo, un trabajo que la mayoría de los que escriben ---sea una carta, una receta de cocina, un artículo de investigación o una novela--- han tenido que asumir desde el principio como parte inevitable de su actividad.

Ahora bien, desde el surgimiento y dominio de la interfaz gráfica de usuario y los entornos de escritorio, a la vez que esta indudable mejora se ha introducido subrepticiamente una nueva e inesperada carga. Ya no se le pide al autor del texto que simplemente lo edite, esto es, que lo redacte y purifique de cuantos errores detecte su ojo. Se presupone, además, que debe darle la forma exacta que habrá de tener en su presentación en papel o, cada vez más, en pantalla. Es decir, el escritor se ha visto obligado a asumir, de golpe y porrazo, las funciones del diseñador y del tipógrafo. No otra cosa es lo que hace cuando decide el tipo de fuente, las dimensiones de la página y sus componentes y un largo etcétera de detalles que determinan el aspecto que el texto acabará teniendo en su versión impresa o navegable, cosas que hasta hace bien poco eran competencia exclusiva de los expertos en la materia.

Hasta tal punto se ha convertido en algo natural e incuestionable este peculiar suplemento del trabajo de la escritura ---fuente de incontables sufrimientos para el escritor, dicho sea de paso---, que pocos usuarios conciben escribir un texto con algo que no sea un procesador de textos (MS Word, Openoffice Writer, etc.) o, no contenga funciones de procesamiento de texto. Hoy por hoy, requiere ya de introducción previa, como la que estamos haciendo, determinar claramente la diferencia entre editar un texto y todo lo otro que, en estos momentos, rodea al acto de la edición propiamente dicha y que podríamos englobar en la noción de dar formato al texto.

¿Qué es, pues, un editor de textos? Suprima el lector de su programa de procesamiento de textos todas las funciones relativas a lo que hemos llamado ---y suelen llamar tales programas--- dar formato y se quedará con la mitad de las opciones existentes en el menú de su aplicación. Ésas y no otras son las opciones principales que proporciona convencionalmente una aplicación para la edición de textos.

Vi es un clásico editor de textos para la consola y está provisto de todas las opciones básicas de edición y otras muchas más de las que no trataremos. Nuestro objetivo es presentar Vim, que es una versión mejorada de Vi y que se convertirá a partir de ahora en el experto ayudante que HAL pone en nuestras manos para estos menesteres. Aunque prácticamente no veremos casi nada de Vim que no tenga ya el propio Vi, esas mejoras, de las que se pueda sacar partido en el futuro, hacen que Vim sea recomendable como primera elección. En lo que sigue y para simplificar la exposición, hablaremos siempre de Vim, también en los casos en que, rigurosamente hablando, nuestras afirmaciones debieran atribuirse propiamente a Vi.

Tendremos, por tanto y en primer lugar, que instalar Vim en nuestro sistema. Las distribuciones modernas suelen incluir por defecto una versión reducida de Vim, pero es muy posible que una versión más completa no esté instalada. El procedimiento de instalación es bien conocido ya a estas alturas:

aptitude install vim

Antes de empezar a trabajar con Vim conviene tener en cuenta unas pocas cosas más.

Intentar explicar Vim para usuarios que no están acostumbrados a las aplicaciones de consola y, ni tan siquiera, al uso de un editor puro y simple, entraña más de una dificultad. Una manera posible de empezar salvando tales dificultades es tomar como punto de partida las opciones fundamentales de un procesador de texto que ha sido expurgado de las funciones que no son características de los editores y ver cómo obtener el mismo resultado con Vim. Este es el camino que vamos a elegir como hilo conductor de la exposición.

Por otra parte, y puesto que la forma de operar con la versión "pura" de Vim ---su versión para consola y sin uso alguno de ratón, que es de la que hablaremos--- es radicalmente diferente de la forma de operar en cualquier editor de interfaz gráfica, será necesario detenerse en las peculiaridades de la interfaz de este Vim "puro y duro" que vayan surgiendo por el camino. Eso sí, una vez explicada la característica en cuestión se sobreentenderá su conocimiento y su sentido para el resto de situaciones semejantes.

Finalmente ---y es fundamental advertirlo---, es improbable que el lector se haga una idea efectiva del contenido de la explicación si no se ejercita con ejemplos de su invención. No es algo privativo de Vim, ni de las aplicaciones de consola en general, sino que es consustancial al aprendizaje de cualquier aplicación nueva, sea del tipo que sea.

Pongamos término al preámbulo y entremos decididamente en materia. Merece la pena dar un primer bocado antes de terminar la sesión de hoy. Vamos a hacerlo como sugerimos, tomando como hilo de Ariadna los menús típicos de un procesador de textos, por ejemplo, de Openoffice Writer (versión 2.4).

La primera entrada de menú que encontramos allí es el clásico menú "Archivo". Si nos ceñimos a las opciones básicas del menú "Archivo" de Openoffice Writer ---comunes a la mayoría de procesadores de texto o editores--- encontraremos las siguientes [Se indica el nombre de la opción y la función asociada]:

Nuevo
Abrir un nuevo fichero.

Abrir
Abrir un fichero existente.

Cerrar
Cerrar la ventana de edición del fichero actual, sin cerrar la aplicación.

Guardar
Guardar en el disco duro los cambios realizados en el fichero editado.

Guardar como
Guardar en el disco duro bajo un determinado nombre de fichero los cambios realizados en el fichero editado. Esta función se usa cuando se quiere dar otro nombre al fichero modificado que el que éste tenía en origen.

Imprimir
Enviar el fichero a la impresora

Terminar
Cerrar la aplicación


Tenemos, en resumen, cuatro operaciones básicas: abrir o cerrar un fichero, guardar los cambios realizados en él e imprimirlo. Veamos cómo se realiza cada una de estas operaciones con Vim. Propondremos una sola forma de hacerlo. Normalmente, Vim permite hacer la misma operación de varias maneras distintas. Como aquí de lo que se trata es de ofrecer una introducción absolutamente reducida a lo elemental, adoptamos, en general y salvo excepciones, esta misma constricción para ulteriores explicaciones.

Abrir un fichero de texto en Vim se hace simplemente desde la línea de órdenes, añadiendo como argumento a la orden vim el nombre que queramos dar al fichero (cuando es de nueva creación) o la ruta del fichero (cuando es un fichero ya existente). Es convención de sistemas Unix evitar espacios en nombres de ficheros. En general y aunque nuestro HAL puede tratar perfectamente con nombres que incluyen espacios, nos ahorraremos trabajo si sustituimos el espacio por un guión o un punto. Por ejemplo:

vim primera_prueba

abre Vim para editar el nuevo fichero de nombre primera_prueba.

Por su parte,

vim guiones/buscar_en_jargon

abre Vim para editar el fichero existente buscar_en_jargon, que reside en el subdirectorio guiones bajo nuestro home, que se supone que es donde estamos.

Tras esta operación inicial tendremos delante nuestra flamante interfaz de Vim con el espacio de trabajo para editar el fichero abierto. Moverse por esta interfaz es fácil si se conoce su secreto y se está acostumbrado a él. Es sencillamente imposible o infernal si el secreto no ha sido desvelado. Hay quien cree que el conocimiento de este secreto es un signo definitivo de distinción. El usuario de Vim, resulta a ojos extraños un mago ejerciendo su arte en oscuros mundos. Pero hay un truco, y como todos los trucos puede enseñarse y aprenderse. Aprendido el truco, todo su carácter mágico se expone a la luz de la inteligibilidad y adquiere su pleno sentido. La magia deviene entonces razón, aunque su carácter extraordinario y maravilloso no se pierda, sino que más bien se acrecienta en el resplandor de la genial idea subyacente.

Esta genialidad es tan sencilla como revolucionaria. Y lo sigue siendo a pesar de los más de treinta años transcurridos desde su invención. La veremos el día que viene.

Pero no podemos dejar huérfano al lector con su interfaz de Vim abierta. Le diremos cómo salir, aunque la explicación del porqué de esta operación quede reservada para la siguiente entrada de esta serie.

Para salir de Vim hay que teclar lo siguiente:

:q

Por cierto, un truco no comentado hasta ahora. Tras salir de Vim, la combinación de teclas Ctrl+L pondrá el "mensaje de bienvenida de HAL" en la parte superior de la pantalla. Esta combinación es de uso frecuente, sobre todo después de salir de la interfaz de un programa externo a la línea de órdenes.



Resumen

  • Un procesador de textos combina funciones de edición con funciones de formateo.

  • Dar formato es algo que supone una carga innecesaria para quien escribe o edita un texto.

  • La orden vim ejecuta Vim, un magnífico editor de texto para la consola y, en consecuencia, un superayudante de HAL.

  • vim nombre_fichero abre el fichero dado como argumento. Este argumento es el nombre de un fichero o su ruta en el árbol de directorios.

  • La combinación de teclas Ctrl+L permite ubicar la línea actual en la parte superior de la pantalla. Se dice también que Ctrl+L "limpia" la pantalla.

2 comentarios:

  1. Sigo con enorme interés estas lecciones, Luis, como ya te dije en mi blog. Esto merecería honores de imprenta.
    Ah, el vim. Fíjate que he sido incapaz de hacerme con él, y sin embargo soy un fan irremediable del gnu emacs, no sé si por lo de su psicoanalista je je je. En todo caso, sin hacer flame wear, creo que ambos somos rara avis.
    Un abrazo.

    ResponderEliminar
  2. Juan Manuel, entiendo tu debilidad por emacs y su psicoanalista. Todavía la tengo yo, a pesar de que estoy demasiado acostumbrado a Vi(m) y me cuesta volver por los comandos múltiples de Emacs. La verdad, pensé en hacer comentario de los dos, Vi(m) y GNU Emacs, pero esto se saldría ya de madre. Al final me he arriesgado con Vim, que según dicen es todavía más duro para un principiante que Emacs. Ya se verá lo que opinan los principiantes, aunque aquí poco expresan, lo mismo se quedaron atascados en los primeros artículos de la serie.

    En cuanto a lo de rara avis está claro que tú me superas. Porque a ver dónde encuentras a otro que escriba sus traducciones de Homero con Emacs y las procese con *TeX ;-)

    ResponderEliminar