Introducción

Puede parecer poca cosa, pero el estilo adecuado puede mejorar por mucho nuestras condiciones de trabajo.

Para escoger los temas, me he basado en el hecho que estos tengan el más amplio soporte en otras aplicaciones. De esta forma, podría usar catppuccin tanto en Neovim como en Alacritty

web-devicons

-- ~/.config/nvim/lua/plugins/nvim-web-devicons.lua

return {
  'nvim-tree/nvim-web-devicons',
  lazy = true, 
  config = function()
    require('nvim-web-devicons').setup { }
  end,
}

Si guardamos sin cerrar, podremos ver en nuestra barra este mensaje:

# Config Change Detected. Reloading...

- **changed**: `~/.config/nvim/lua/plugins/nvim-web-devicons.lua`

Que será una constante en los siguientes plugins

Además, si reiniciamos nvim, veremos que ya no muestra el mensaje de error del final de la guía anterior, porque ya tiene un plugin que cargar

colorscheme

Con esto podremos cambiar el tema de forma más sencilla.

La idea es que podemos configurar la cantidad de temas que querramos, y solo se cargará aquel cuyo nombre coincida con el return del siguiente archivo

-- ~/.config/nvim/lua/config/colorscheme.lua

-- return "nordic"
-- return "onenord"
return "catppuccin"

Temas

Por ahora solo he probado tres: catppuccin, nord, onenord, los dos últimos basados en la paleta de colores Nord

Catppuccin

-- ~/.config/nvim/lua/config/catppuccin.lua

return {
  flavour = "frappe",               -- Opciones: "latte", "frappe", "macchiato", "mocha"
  background = {                    -- Configuración de fondo para modos claro/oscuro
    light = "latte",
    dark = "mocha",
  },
  transparent_background = false,   -- Establecer en `true` si se desea un fondo transparente
  term_colors = true,               -- Habilita la configuración de colores del terminal
  compile = {
    enabled = true,                 -- Habilita la compilación del tema para un inicio más rápido
    path = vim.fn.stdpath("cache").. "/catppuccin", -- Ruta de caché para el tema compilado
  },
  ntegrations = {                   -- Integraciones con otros plugins para una tematización cohesiva
    cmp = true,                     -- Integración con blink.cmp
    aerial = true,
    treesitter = true,              -- Integración con nvim-treesitter
    -- Añadir otras integraciones según los plugins instalados
  },
}
-- ~/.config/nvim/lua/plugins/catppuccin.lua

return {
  "catppuccin/nvim",
  name = "catppuccin",
  priority = 1000,
  lazy = false,
  config = function()
    local colorscheme = require("config.colorscheme")
    if colorscheme == "catppuccin" then
      require(colorscheme).setup(require("config.catppuccin"))
      vim.cmd.colorscheme(colorscheme)
    end
  end
}

Nordic

-- ~/.config/nvim/lua/config/nordic.lua

return {
  theme = "nordic",         -- Al parece, no tiene más opciones 
  bold_keywords = true,
  italic_comments = true,
  transparent = {
    bg = false,             -- Enable transparent background.
    float = true,           -- Enable transparent background for floating windows.
  },
  bright_border = false,    -- Enable brighter float border.
  reduced_blue = true,
  noice = {
    style = 'flat',         -- Available styles: `classic`, `flat`.
  },
  cursorline = {            -- Modifica como se ve la selección con mouse
    theme = "dark",         -- o "dark"
  },
}
-- ~/.config/nvim/lua/plugins/nordic.lua

return {
  "AlexvZyl/nordic.nvim",
  lazy = false,
  priority = 1000,
  lazy = false,
  config = function()
    local colorscheme = require("config.colorscheme")
    if colorscheme == "nordic" then
      require(colorscheme).load(require("config.nordic"))
      vim.cmd.colorscheme(colorscheme)
    end
  end,
}

onenord

-- ~/.config/nvim/lua/config/onenord.lua

return {
  theme = light, -- "dark" or "light". Alternatively, remove the option and set vim.o.background instead
  -- borders = false, -- Split window borders
  -- fade_nc = false, -- Fade non-current windows, making them more distinguishable
  -- -- Style that is applied to various groups: see `highlight-args` for options
  -- styles = {
  --   comments = "NONE",
  --   strings = "NONE",
  --   keywords = "NONE",
  --   functions = "NONE",
  --   variables = "NONE",
  --   diagnostics = "underline",
  -- },
  -- disable = {
  --   background = false, -- Disable setting the background color
  --   float_background = false, -- Disable setting the background color for floating windows
  --   cursorline = false, -- Disable the cursorline
  --   eob_lines = true, -- Hide the end-of-buffer lines
  -- },
  -- -- Inverse highlight for different groups
  -- inverse = {
  --   match_paren = false,
  -- },
  -- custom_highlights = {}, -- Overwrite default highlight groups
  -- custom_colors = {}, -- Overwrite default colors
}
-- ~/.config/nvim/lua/plugins/onenord.lua

return {
  "rmehri01/onenord.nvim",
  --name = "onenord",
  priority = 1000,
  lazy = false,
  config = function()
    local colorscheme = require("config.colorscheme")
    if colorscheme == "onenord" then
      require(colorscheme).setup(require("config.onenord"))
      vim.cmd.colorscheme(colorscheme)
    end
  end
}

En este punto se puede reiniciar. y puede verse como el tema catppuccin toma el control de nvim una vez se termina de instalar

La mayor recomendación en este apartado es que el tema, o al menos el background si es posible, coincida con el tema de la terminal que se use