Inicio Plugins en neovim con lazy
Entrada
Cancelar

Plugins en neovim con lazy

Llevo una puta semana de pelea con Neovim. El caso es que estoy acostumbrado ya a usar Neovim y es verdad que tiene unas posibilidades impresionantes, pero hasta ahora ha sido un dolor de huevos a la hora de instalar los plugins.

Empecé con Packer y conseguí que funcionaran, aunque nunca llegué a enterarme bien de cómo iba el tema. Además, como hay que actualizar los plugins a mano, cada vez que me acordaba de actualizar tenía que buscar en internet cómo se hacía porque se me había olvidado.

Resultado: al carajo.

También he probado Lazyvim, pero viene con tantos plugins y configuraciones por defecto que si no tienes una ingeniería informática y un par de másters no hay cristo que se entere de qué tocar para dejarlo todo más o menos a tu gusto.

Resultado: Un IDE pesado con ventanas molestas y un montón de cosas que no voy a utilizar en la puta vida.

Al final he optado por liarme la manta a la cabeza y configurar lazy.nvim a pelo, desde cero, buscando las cosas que necesito una a una para conseguir un Neovim ligero y con el que me encuentre cómodo.

Lo primero es instalar lazy.nvim siguiendo las instrucciones de su página en github:

  • Añadimos este trozo de código al archivo ~/.config/nvim/init.lua con su correspondiente línea require apuntando al archivo donde guardaremos la configuración de lazy:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    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)
    require('config.lazy')
    
  • Creamos el directorio ~/.config/nvim/lua/config, donde vamos a guardar las configuraciones de los plugins, y dentro el archivo lazy.lua,donde pondremos la configuración por defecto de lazy.nvim para poder cambiarla cuando queramos.
    1
    2
    3
    4
    5
    6
    
    vim.g.mapleader = " " -- Make sure to set `mapleader` before lazy so your mappings are correct
    require("lazy").setup({
    "folke/which-key.nvim",
    { "folke/neoconf.nvim", cmd = "Neoconf" },
    "folke/neodev.nvim",
    })
    
  • Ahora vamos a configurar algunas variables de entorno. Creamos el archivo ~/.config/nvim/lua/config/settings.lua y le colocamos dentro nuestras preferencias. Yo tengo esto:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    vim.opt.mouse = 'a'             --Activa las funciones del ratón para poder usarlo.
    vim.opt.wrap = true             --Dobla las líneas que se salen de la pantalla para que se puedan leer.
    vim.opt.breakindent = true      --Aplica la misma indentación que tiene la línea a la parte doblada.
    vim.opt.expandtab = false       --Si el valor es true, convierte los tabuladores en espacios.
    vim.opt.number = true           --Activa la numeración de líneas.
    vim.opt.relativenumber = true   --Activa los números de línea relativos.
    vim.opt.ignorecase = true       --Ignora las mayúsculas en las búsquedas.
    vim.opt.smartcase = true        --Ignora las mayúsculas excepto si están en el término de búsqueda.
    vim.opt.hlsearch = false        --Resalta los resultados de la búsqueda anterior.
    vim.opt.tabstop = 2             --Tabulado.
    vim.opt.shiftwidth = 2          --Espacios que se usarán en el autoindentado.
    vim.opt.showmode = false        --Quitamos el que neovim nos informe del modo en el que estamos porque ya sale en la barra inferior.
    vim.g.mapleader = " " -- Make sure to set `mapleader` before lazy so your mappings are correct
    

No hay que olvidar agregar el correspondiente require('config.settings') en el archivo init.lua para usar estas preferencias.

  • Y llegó la hora de instalar los complementos. Para ello sólo hay que colocar los enlaces a github de los mismos en el archivo lazy.lua para que este se encargue de instalarlos e ir actualizándolos cuando toque.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    {
      "folke/tokyonight.nvim",
      lazy = false, -- make sure we load this during startup if it is your main colorscheme
      priority = 1000, -- make sure to load this before all the other start plugins
      config = function()
        -- load the colorscheme here
        vim.cmd([[colorscheme tokyonight]])
      end,
    },    --El esquema de color.
      {'nvim-lualine/lualine.nvim'},  --La barrainferior.
      { "lukas-reineke/indent-blankline.nvim", main = "ibl", opts = {} }, --Para que vaya marcando con una línea las indentaciones.
      {"nvim-treesitter/nvim-treesitter", build = ":TSUpdate"}, --Sirve para el resaltado de sintaxis.
      {'lewis6991/gitsigns.nvim'},    --Muestra una barra para indicar qué cambia en un archivo monitoreado con git.
      {'windwp/nvim-autopairs',   --Sirve para autocompletar comillas, corchetes, etc.
      event = "InsertEnter",
      opts = {} -- this is equalent to setup({}) function
      }
    

Colocamos los require correspondientes en init.lua y creamos los archivos de configuración necesarios para que todo funcione. Lazy se encarga de descargar e instalarlo todo.

  • Ahora toca el corrector ortográfico. Este viene integrado en neovim, así que no hay que instalar ningún plugin, sólo activarlo en settings.lua. Lo he configurado para que sólo se active cuando es un archivo markdown, porque si no es un tostón ver todo de rallitas rojas en los archivos de código.
    1
    2
    3
    4
    5
    6
    7
    
    vim.api.nvim_exec ([[
      augroup markdownSpell
          autocmd!
          autocmd FileType markdown setlocal spell spelllang=es
          autocmd BufRead,BufNewFile *.md setlocal spell spelllang=es
      augroup END
    ]], false)
    

Después de poner esto, te preguntará si quieres instalar los diccionarios necesarios. Aceptas y listo.

Y ya está. Con esto tengo (de momento) neovim configurado a mi flujo de trabajo.

Se pueden ver las opciones y el estado de los plugins ejecutando :Lazy en el prompt de neovim.

Voy a dejar en Github los dotfiles tal y como han quedado por si alguien quiere echarle un vistazo.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.