Como cambiar el colorscheme de neovim al vuelo con Themery

Creo que nadie pone en duda de que Vim sea un gran editor de texto por todas las cosas que incorpora y te deja hacer. Sin embargo, opino que hay algunos aspectos que son esenciales pero aún así se han dejado de lado. Uno de ellos y que será el que abordaremos es el poder cambiar de temas, o colorscheme como es llamado en este programa.

El Problema

Verás, en vim y neovim, toda la configuración se rige por un fichero. En él se especifica como quieres que se comporte el editor. Por supuesto la apariencia del editor no es menos. El problema de esto es que en el momento en el que quieras cambiar el colorscheme, te verás obligado a entrar en tu fichero de configuración, buscar la sección de los temas (si es que no tienes una específica), cambiarlo y reiniciar para aplicar los cambios. Algo poco práctico si en tu día a día quieres o necesitas cambiarlo frecuentemente.

Otra opción que tenemos es la de cambiar el tema con el comando :colorscheme example. Aunque es una opción más instantánea tiene algunos problemas. Para empezar, los cambios son temporales y se pierden al cerrar neovim. Tienes que recordar el nombre del tema al cuál quieres cambiar y el más importante: muchos colorscheme dependen de variables.

Si miramos, por ejemplo, las instrucciones para utilizar un colorscheme como puede ser el popular gruvbox, podemos ver en la documentación lo siguiente:

vim.o.background = "dark" -- or "light" for light mode
vim.cmd([[colorscheme gruvbox]])

¡Vaya! Ademas de llamar al colorscheme, necesitamos establecer una variable. En este momento utilizar simplemente el comando :colorscheme deja de ser una opción viable. Lo normal es que la mayoría de estos tienen decenas de lineas de personalización por lo que hace obligatorio recurrir al fichero de configuración.

Themery al rescate

Themery.nvim es un plugin para Neovim, muy configurable, que añade la posibilidad de mostrar un menú con una lista de todos los temas que hayas configurados para permitirte cambiar entre ellos rápidamente. No solo eso, si no que además te deja previsualizar en tiempo real cada tema sin aplicarlo. Similar a como funciona en Vs Code.

Themery demo

Entre sus características encontramos:

  • La elección es persistente. Es decir, podemos seleccionar un colorscheme y se guardará para la próxima vez que inicies neovim.
  • Personalización. Puedes personalizar qué elementos mostrar en la lista y ordenarla.
  • Inteligente. Puedes definir código que será ejecutado antes y después de establecer el colorscheme en caso de que necesites establecer algunas variables o algo más.
  • Ligero. Solo se ejecuta cuando lo invocas. Es decir, recuperar el colorscheme corre a cuenta de neovim al iniciarse.

Puedes encontrar la información completa de como instalarlo y configurarlo en el repositorio de Themery.

Fuentes