08. Vim: diccionarios I

Publicado por

Los diccionarios, son una estructura de datos muy útil disponible en varios lenguajes de programación sobre todo de scripting, y Vimscript no es la excepción. Estos son arreglos asociativos que relacionan valores.

Los diccionarios se declaran con una lista de pares clave: valor separados por comas y envueltos entre llaves.

:let g:saludo = { 'formal': 'Buenos días ¿cómo está usted?',
                \ 'informal': 'Hola ¿cómo te va?'}

Incluso puedes crear diccionarios vacíos:

:let g:config = {}

Los elementos almacenados en un diccionario se identifican por su llave, así en el primer ejemplo, el elemento 'buenos días' se encuentra asociado a la llave 'formal', para acceder o modificar el elemento podemos usar la notación de arreglo, o la notación de objeto.

Notación de arreglo:

:echo g:saludo['formal']
Buenos días ¿cómo está usted?

Notación de objeto:

:echo g:saludo.informal
Hola ¿cómo te va?

Y para modificarlos puedes realizar una asignación, con cualquiera de las dos notaciones:

:let g:config['modo'] = 'formal'
:let g:config.modo = 'informal'

La manera más adecuada de acceder a las entradas del diccionario, dependerá de para qué estás utilizando el diccionario, para ilustrarlo, considera la siguiente función:

:function! Saludar(...)
:  if a:000 == []
:    echo g:saludo[g:config.modo]
:  else
:    echo g:saludo[a:1]
:  endif
:endfunction

La interfaz de la función Saludar() está definida para recibir ninguno o cualquier número de argumentos, en particular estamos buscando usarla con uno o ninguno y su comportamiento es el siguiente:

:call Saludar('informal')
Hola ¿cómo te va?
:call Saludar('formal')
Buenos días ¿cómo está usted?


Nota que cuando la función es llamada sin argumentos, intenta obtener la información que necesita leyendo del diccionario g:config la llave modo, por lo que si esta no existe o no contiene un valor adecuado, provocará que Saludar falle.

Así como para agregar entradas al diccionario utilizamos el comando :let, para eliminarlas podemos utilizar el comando :unlet. Observa lo que pasa cuando eliminamos g:config.modo:


Como puedes observar, los diccionarios son estructuras muy versátiles que pueden facilitarte mucho la vida al momento de escribir tus propios plugins. Espero que esta entrada te inspire unas cuantas ideas, y nos vemos en la siguiente nota. ¡Hasta entonces!

Deja una respuesta

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