wandres.dev
ARQUITECTO · Distribuciones y LazyVim

LazyVim a fondo: instalación y estructura

Instala LazyVim sin miedo, entiende su estructura de carpetas y domina el sistema de Extras. Y decide con criterio qué te sigue aportando ahora que Neovim 0.12 trae gestor, completado y LSP nativos.

⏱ 16 min

LazyVim no es una caja negra: es la misma estructura que montaste a mano, con una base de plugins ya afinada encima. Pero Neovim 0.12 movió la línea de flotación — parte de lo que justificaba usar una distro ahora viene de fábrica. Antes de instalarla, conviene saber qué te sigue aportando y qué ya no.

🎯 Al terminar esta lección sabrás
  • Separar lo que LazyVim aporta hoy de lo que Neovim 0.12 ya trae de serie.
  • Instalar LazyVim de forma segura (con copia de seguridad).
  • Entender su estructura de carpetas.
  • Dominar el sistema de Extras (:LazyExtras).
  • Auditar su reparto de teclas antes de que te muerda.

Qué aporta LazyVim en Neovim 0.12

Durante años, la propuesta de una distro se resumía en “te doy gestor de plugins, completado y LSP ya cableados”. Neovim 0.12 (estable actual: 0.12.4) trae las tres cosas de serie, así que ese argumento se ha quedado a medias. Vale la pena separar el grano de la paja:

Argumento clásico Estado en 0.12
“Te monta el gestor de plugins” Ya no es argumento. vim.pack es nativo y trae lockfile.
“Te deja el autocompletado listo” Ya no es argumento. vim.o.autocomplete = true y vim.opt.completeopt bastan para el día a día.
“Te configura el LSP” Ya no es argumento. vim.lsp.config() y vim.lsp.enable(), más una carpeta lsp/ en el runtimepath, hacen el trabajo sin nvim-lspconfig ni mason.
“Un conjunto de plugins curado” Sigue en pie. Elegir 40 plugins que no se pisen entre sí es trabajo real, y aquí ya está hecho.
“Keymaps coherentes y documentados” Sigue en pie. Un mapa de teclas con grupos consistentes y which-key describiéndolo todo.
“Extras por lenguaje” Sigue en pie. LSP, DAP, parsers y formateo coordinados por lenguaje, con una línea.
“Alguien lo mantiene cuando algo se rompe” Sigue en pie. Cuando nvim-treesitter se reescribió por completo, la distro absorbió el golpe; una config propia no.
ℹ️
Lo que sí te cuesta

Dos cosas, y conviene saberlas antes de instalar. La primera: heredas su reparto de teclas, y LazyVim mapea mucho. En concreto cede s, S, r, R y <C-Space> a flash.nvim — y <C-Space> es justo la tecla que este track reserva para el autocompletado. La segunda: heredas su pila. LazyVim sigue montando nvim-lspconfig y mason.nvim para los servidores, y blink.cmp para el completado. Funciona bien, pero es una capa por encima de lo que 0.12 ya sabe hacer solo. No es un defecto: es una decisión de compatibilidad. Solo tienes que saber que está ahí.

💡
La pregunta útil no es 'distro sí o no'

Es “¿qué quiero delegar?”. Si lo que te pesa es mantener cuarenta plugins al día y tener soporte decente de seis lenguajes sin dedicarle tardes, LazyVim sigue siendo una compra excelente. Si lo que quieres es un editor pequeño y tuyo, 0.12 te lo pone más fácil que nunca sin distro. Lo que ya no tiene sentido es instalar LazyVim porque configurar el LSP es difícil: hoy no lo es.

Instalación segura

⚠️
Haz copia de tu config actual

LazyVim usa ~/.config/nvim. Si ya tienes tu config a mano ahí, guárdala antes. Así puedes volver cuando quieras.

# 1) Copia de seguridad de tu config y datos actuales
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak

# 2) Clona el starter oficial de LazyVim
git clone https://github.com/LazyVim/starter ~/.config/nvim

# 3) Quita el historial git del starter (para hacerlo tuyo)
rm -rf ~/.config/nvim/.git

# 4) Arranca: instalará todo solo
nvim

El primer arranque descarga e instala decenas de plugins. Cuando termine, reinicia Neovim y tendrás un IDE completo funcionando.

La estructura (te sonará)

~/.config/nvim/
├── init.lua                  # una línea: require("config.lazy")
├── lua/
│   ├── config/
│   │   ├── lazy.lua          # arranca LazyVim + tus imports de Extras
│   │   ├── options.lua       # TUS opciones (se fusionan con las de LazyVim)
│   │   ├── keymaps.lua       # TUS keymaps
│   │   └── autocmds.lua      # TUS autocmds
│   └── plugins/              # TUS specs: añadir, override o desactivar
└── lazy-lock.json            # versiones exactas (versiónalo en Git)
ℹ️
Es tu misma estructura del Nivel 1

lua/config para opciones, keymaps y autocmds; lua/plugins para specs. Idéntico a lo que montaste a mano. La diferencia: LazyVim ya trae una base enorme, y tus archivos la extienden o modifican, no parten de cero.

Cómo carga LazyVim

En lua/config/lazy.lua, LazyVim se importa como un plugin más y luego importa tus plugins y los Extras que actives:

require("lazy").setup({
  spec = {
    -- 1) la base de LazyVim
    { "LazyVim/LazyVim", import = "lazyvim.plugins" },

    -- 2) los Extras que actives (los añade :LazyExtras)
    { import = "lazyvim.plugins.extras.lang.typescript" },
    { import = "lazyvim.plugins.extras.lang.rust" },

    -- 3) TUS plugins (todo lo que pongas en lua/plugins/)
    { import = "plugins" },
  },
})

El orden importa: LazyVim primero, luego Extras, luego lo tuyo — así lo tuyo siempre gana y puede sobreescribir cualquier default.

El sistema de Extras

Los Extras son módulos oficiales que añaden soporte de un lenguaje o una feature ya configurados y coordinados: servidor LSP, formateador, adaptador de depuración y parser de Treesitter, todo junto y probado. Se gestionan con una UI:

:LazyExtras

Se abre una lista navegable. Pulsa x sobre un extra para activarlo o desactivarlo; LazyVim edita tu lua/config/lazy.lua por ti añadiendo el import. Categorías típicas:

lang.* lenguajes (rust, typescript, clangd…)editor.* herramientas de edicióncoding.* completado, snippets, paresai.* Copilot y compañíaformatting.* formateadores (prettier…)
Un IDE de Rust en 10 segundos

Abre :LazyExtras, busca lang.rust, pulsa x, reinicia. Acabas de instalar rustaceanvim, crates.nvim, el adaptador codelldb para depurar y el parser de Rust, todo coordinado y mantenido. Lo que en tu config a mano fue una lección entera, aquí es una tecla. Ese es el argumento que 0.12 no ha tocado: no la instalación de los plugins, sino que alguien haya decidido cuáles y cómo encajan.

Lo primero que haces después de instalar

Antes de escribir una sola línea de personalización, audita el teclado. LazyVim mapea mucho, y sus decisiones no tienen por qué coincidir con las tuyas:

:map s
:map <C-Space>
:map <Tab>
:checkhealth

En una LazyVim recién instalada verás que s y S pertenecen a flash.nvim, y que <C-Space> también. Eso último es un problema directo en este track: <C-Space> está reservado para el autocompletado. Lo arreglamos en la lección siguiente, que es justo la de doblar la distro sin romperla.

💡
Descubre los atajos antes de inventarte otros

Pulsa <leader> y espera medio segundo: which-key te muestra el mapa completo con sus grupos (<leader>f buscar, <leader>g git, <leader>c código, <leader>x diagnósticos…). Mirar ahí antes de crear un atajo te ahorra la mitad de los conflictos.

⚔️ Monta y explora
  1. Instala LazyVim con copia de seguridad previa.
  2. Abre :Lazy y mira todo lo que trae de base.
  3. Ejecuta :map s y :map <C-Space> y anota quién los tiene.
  4. Abre :LazyExtras y explora las categorías.
  5. Activa lang.typescript y reinicia: ya tienes soporte de TS afinado.
  6. Localiza dónde LazyVim añadió el import en lua/config/lazy.lua.
  7. Pregúntate en voz alta qué de lo que acabas de instalar no podrías montar tú en media hora con 0.12. Esa respuesta es el valor real de la distro para ti.