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.
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.
- 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. |
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í.
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
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)
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:
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.
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.
- Instala LazyVim con copia de seguridad previa.
- Abre
:Lazyy mira todo lo que trae de base. - Ejecuta
:map sy:map <C-Space>y anota quién los tiene. - Abre
:LazyExtrasy explora las categorías. - Activa
lang.typescripty reinicia: ya tienes soporte de TS afinado. - Localiza dónde LazyVim añadió el
importenlua/config/lazy.lua. - 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.