:plugins

Uno de los puntos fuertes de Neovim, aparte de la configuración y personalización, es la capacidad de instalar “plugins” que permiten dotarles de muchas funcionalidades, hasta el punto de convertirlo en un IDE (Entorno de desarrollo integrado). La cantidad de “plugins” que hay es tan inmensa, y además cuentan con su documentación, que es un plus adicional.

Para poder instalar plugins en Neovim tenemos que hacer uso de un gestor de plugins como Packer, Vim-Plug o Lazy.

Para este sitio vamos a utilizar este último, ya que nos permite cargar plugins de manera “pasiva”, haciendo que el tiempo de carga de Neovim sea más rápido.

Instalación de Lazy

ADVERTENCIA: Antes de proceder a instalar Lazy, conviene tener instalado git en nuestro sistema operativo, ya que este gestor necesita clonar los repositorios de GitHub para instalarse.

Una vez instalado git, nos vamos al directorio $HOME/.config/nvim/lua (no es obligatorio, pero es mejor así para poder organizar la configuración) y creamos el archivo lazy-cfg.lua.

Dentro del archivo pegamos esto:

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
  })

end
vim.opt.rtp:prepend(lazypath)

-- Activa Lazy y lo configura
require("lazy").setup({
    {import = "plugins"} -- Carga todos los archivos que hay dentro de este directorio
})

Guardamos el archivo y luego abrimos el archivo init.lua del directorio “nvim”. Vamos, el que tenemos la configuración. Añadimos require("lazy-cfg") y guardamos.

Salimos de Neovim y volvemos a ejecutarlo. Tardará un poco más en arrancar dado que necesita clonar el repositorio. En un principio veremos la pantalla inicial de Neovim como si nada, pero ahora Lazy ya está instalado.

Para entrar a Lazy usaremos el comando :Lazy y aparecerá el susodicho gestor de plugins. Ahora mismo solo hay un plugin, que es el propio Lazy.

Lazy pelao
El gestor Lazy sin plugins

Breve listado de plugins

Una vez tenemos instalado nuestro gestor de plugins favorito, ha llegado el momento de liarse la manta a la cabeza. Antes comenté que la cantidad de plugins que hay es tan inmensa, que el más novato se sentirá más perdido que una cabra en un garaje.

Para hacer más amena la lectura, nos vamos a basar en la lista de los plugins más populares de Dotfyle. En la siguiente tabla se recogen dichos plugins y qué es lo que hace cada uno.

PluginDescripción
TreesitterResaltado, indentación y auto-emparejamiento de código
LspconfigConfiguraciones rápidas del LSP (Protocolo de servicio del lenguaje) de Neovim
MasonGestor portable para LSPs, Linter, depuradores y formateadores
None-LSUsa Neovim como servidor de lenguaje para inyectar diagnósticos LSP, acciones de código, etc…
nvim-cmpAutocompletado
PlenaryContiene bastantes funciones de Lua. Requerido por algunos plugins
TelescopeBuscador tipo “fuzzy-finder”
LualineBarra de estado rápida, escrita en Lua
LuaSnipMotor para cargar fragmentos de código (snippets) escrito en Lua
LspKindPictogramas al estilo Visual Studio Code para el LSP de Neovim
nvim-web-deviconsPaquete de iconos para desarrolladores para Neovim
vim-deviconsPaquete de iconos para desarrolladores para Vim
indent-blanklineGuías para resaltar la indentación/sangría
nvim-autopairsAutoemparejamiento
NuiLibrería de componentes para la IU de Neovim
nvim-ts-autotagCierre automático de etiquetas (requiere Treesitter)
nvim-notifyGestor de notificaciones
NoiceReemplaza la IU de Neovim por otra
WhichKeyMuestra un listado de los atajos de Neovim, y permite añadir otros nuevos
nvim-dapPermite la depuración en Neovim
nvim-dap-uiIU para el modo de depuración
NeoTreeGestor de archivos y directorios
TroubleLista de diagnósticos de código y corrección de errores
move.nvimMover líneas y bloques de texto como en el Visual Studio Code
nvim-dashboardPantalla de inicio personalizado
nvim-colorizerResalta los colores en sus diferentes formatos
toggletermMuestra una terminal dentro Neovim, util para desarrolladores
CommentComentarios de código, tanto en línea como en bloque

También hay mogollón de esquemas de colores que no han entrado en la tabla, pero que en esta lista se recogen los más utilizados por la comunidad. Pero esto ya queda a gusto del consumidor.

Y ahora… ¡a instalar los plugins!

Esta vez sí que sí… ¡vamos al turrón!

Antes de proceder a la instalación de un plugin, primero tenemos que saber el autor de ese plugin y el nombre del repositorio de GitHub del que pertenece. Para este ejemplo vamos a usar Lualine, una barra de estado rápida y alternativa para Neovim.

Vamos a crear el archivo lualine.lua dentro de nuestro directorio lua/plugins de la configuración de Neovim. Dentro del archivo plugins.lua escribimos esto:

return {
  -- Lualine
  {"nvim-lualine/lualine.nvim", dependencies = {"nvim-tree/nvim-web-icons"}},
}

Vamos a desmenuzar el ejemplo anterior:

Guardamos los cambios. Salimos de Neovim y cuando volvamos a arrancarlo, detectará los nuevos plugins y los instalará.

Instalando nuevos plugins con Lazy

Pero… ¡¡OJO!! Que se instalen los plugins no significa que estén activados por defecto. Para eso vamos a volver al archivo lualine-cfg.lua y vamos a modificarlo:

return {
  -- Lualine
  {"nvim-lualine/lualine.nvim", dependencies = {"nvim-tree/nvim-web-icons"},
    config = function()
        require("lualine").setup() -- Aquí se activa el plugin
    end,
    },
}

La propiedad config de Lazy carga una función anónima, en la que dentro se activa el plugin.

Guardamos los cambios, salimos de Neovim, volvemos a ejecutarlo y …

Lualine activado
Voilá!! Ya tenemos activado el Lualine.

Consideraciones especiales

Es muy importante actualizar los plugins para recibir nuevas características, mejoras de rendimiento y corrección de fallos.

Cómo instalar, activar y configurar X plugins

Pues ya que sabemos instalar y activar plugins, ahora es el momento de ponernos con otros plugins. Pero no va a ser en esta sección, sino que escribiré una sección por cada plugin, con sus capturas y explicación.

Enlaces