01. Vim: configuración avanzada

Publicado por

Hace ya algún tiempo, dediqué una nota a mostrarte cómo se puede ajustar el comportamiento del editor a través de su archivo de configuración, ahora quiero iniciar una nueva temporada profundizando más sobre este tema.

El archivo vimrc

Como mencioné en la temporada anterior, al iniciar Vim, buscará este archivo, y si lo encuentra, ejecutará su contenido. Hasta el momento he tratado a vimrc como un simple archivo de configuración, pero en realidad es más que eso.

Si miramos más de cerca cómo es utilizado, veremos que a diferencia de un archivo de configuración común, del cual simplemente se inicializan parámetros, vimrc es más parecido a un script, algo así como un plug-in.

Si a estas alturas ya tienes tu archivo vimrc, puedes abrirlo fácilmente dentro del editor simplemente ejecutando el siguiente comando:

:edit $MYVIMRC

De cualquier modo, puedes abrir el ejemplo que se forma parte de la instalación del miso Vim. Para ello necesitas ejecutar este otro comando:

:edit $VIMRUNTIME/vimrc_example.vim

Notarás que los comandos más simples son aquellos que sirven para asignar valores a las opciones del editor, sin embargo no es esto lo único que puede hacerse.

Archivo vimrc_example.vim (Vim 8.0)Archivo vimrc_example.vim (Vim 8.0)

Al ver el contenido de este archivo queda más claro lo que expliqué al inicio. Este ejemplo contiene elementos que se parecen más a un archivo de código fuente que a un archivo de configuración: sentencias condicionales, llamadas a función y operadores lógicos son las primeras cosas que podemos notar.

Introducción a Vim script

Se puede decir que el archivo vimrc es nuestro primer contacto con un nuevo lenguaje de programación: Vim script. El cual es utilizado por el editor para cosas que van desde ajustar sus parámetros, definir esquemas de color y hasta agregar más funcionalidad.

Para empezar a experimentar con este nuevo lenguaje, empezaré por explicar tres aspectos básicos de este: variables, estructuras de control y funciones.

Variables

Los nombres de las variables se componen de símbolos [ASCII][ascii], dígitos y guiones bajos, con la restricción de que no pueden iniciar con dígito, lo usual. De este modo, puedes tener nombres como: indice, _indice, e Indice1, mientras que otros nombres como: mi+indice o 1Indice no están permitidos.

En Vim script las variables necesitan ser declaradas antes de utilizarse, para ello se utiliza el comando :let; cuando ya no necesites alguna variable, puedes destruirla explícitamente con el comando :unlet.

:echo indice
E121: Variable sin definir: indice
E15: La expresión no es válida: indice
:let indice = 0
:echo indice
0
:unlet indice
:echo indice
E121: Variable sin definir: indice
E15: La expresión no es válida: indice

El ejemplo anterior ilustra qué pasa cuando queremos utilizar una variable que no existe. Imagina que en un momento dado, por algún error en nuestro programa, digo, archivo de configuración, intentamos eliminar una variable que no existe:

:unlet indice
E108: No existe la variable: "indice"

Como es de esperarse, la instrucción falla porque la variable no existe. Hay dos formas de darle la vuelta a este error: La primera es simplemente utilizar el símbolo ! para forzar que el comando “funcione”, que en este caso significa “ignorar el error”.

:unlet! indice

La otra manera es, simplemente preguntar si dicha variable existe…

Estructuras de control

Para averiguar si el identificador realmente existe, podemos utilizar la estructura condicional y una función ya incluida en el editor: exists().

:if exists("indice")
: unlet indice
:else
: echo "La variable 'indice' no existe"
:endif

Además de la sentencia condicional, las otras estructuras de control que necesitaremos son los ciclos for y while. Para ilustrar cómo se utilizan veamos estos dos ejemplos equivalentes.

Uno con for:

:for indice in range(5)
: echo "indice vale" indice
:endfor

Y otro con while:

:let indice = 0
:while indice < 5
: echo "indice vale" indice
: let indice += 1
:endwhile

Funciones

Además de exists(), el editor incluye una amplia biblioteca de funciones. Si quieres saber cuáles son y para qué puedes utilizarlas, puedes consultar la ayuda ejecutando :help functions.

Resultado del comando :help functionsResultado del comando :help functions

Vim también te permite crear tus propias funciones, la sintaxis es la siguiente:

:function[!] ()
: " comandos...
:endfunction

Es posible utilizar las funciones de dos formas, la primera es como parte de una expresión, y la segunda es simplemente invocarla para que ejecute alguna tarea y nada más, utilizando el comando :call.

Por ejemplo, puedes cambiar el tipo y tamaño de fuente que usa el editor, solamente si éste se ejecuta dentro de la interfaz gráfica gVim de este modo:

:if has("gui_running")
: set guifont=Monospace\ 12
:endif

Y puedes incluir este código en una función nueva para agruparlo con otras instrucciones:

:function ConfiguraEditor()
: if has('gui_running')
: set guifont=Monospace\ 12
: endif
: set number
:endfunction

En la función de arriba, además de cambiar la fuente y tamaño de la tipografía cuando utilices gVim, le indicas al editor que debe mostrar los números de línea sin importar si este se ejecuta en modo gráfico o desde la terminal (:help 'number'). Para llamar la nueva función basta con ejecutar:

:call ConfiguraEditor()

Listo. Con estas simples herramientas puedes darle un toque muy personal al editor y conseguir que haga las cosas a tu modo. Si tu vimrc empieza a crecer tanto que se vuelva algo complicado de leer o mantener, no te preocupes, puedes dividirlo y organizarlo en diferentes archivos. Te enseñaré cómo en las siguientes publicaciones de esta serie ¡Hasta entonces!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *