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)
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 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!
como guardar y executar un scriptvim lo mas basico hermano !