📰 What's new?
15.x
Neovim >= 0.11.2 includes a lot of changes to the underlying LSP implementation.
Going forward, LazyVim requires Neovim >= 0.11.2, and drops support for older versions.
Changes
- removed compatibility code for Neovim
< 0.11.2 - configure LSP with the native
vim.lsp.config - migrated mason.nvim and mason-lspconfig.nvim to
v2.x - migrated to nvim-treesitter main branch
- with the new version, the
tree-sittercli is required to install parsers - best to run
:checkhealth nvim-treesitterafter updating
- with the new version, the
- replace
nvim-treesitterincremental selection withflash.nvim, since it is no longer supported - enabled blink.cmp cmdline completions
- use LSP based folding when available (disable with
nvim-lspconfig.folds.enabled = false)
14.x
Big new release with a lot of changes and improvements!
Two new plugins have been added, and a lot of plugins have been replaced.
With these changes, default LazyVim is now just 34 plugins.
Added Plugins
- fzf-lua as a replacement for telescope.nvim
- to use telescope.nvim instead, enable the
editor.telescopeextra
- to use telescope.nvim instead, enable the
- blink.cmp as a replacement for nvim-cmp
- to use nvim-cmp instead, enable the
coding.nvim-cmpextra
- to use nvim-cmp instead, enable the
Removed Plugins
- dressing.nvim (replaced with fzf-lua and snacks.input)
- telescope-fzf-native.nvim (replaced with fzf-lua)
- telescope.nvim (replaced with fzf-lua)
- indent-blankline.nvim (replaced with snacks.indent)
- to use indent-blankline.nvim instead, enable the
indent-blanklineextra
- to use indent-blankline.nvim instead, enable the
- nvim-cmp (replaced with blink)
- nvim-snippets (replaced with blink)
- cmp-buffer (replaced with blink)
- cmp-nvim-lsp (replaced with blink)
- cmp-path (replaced with blink)
Changes
- added
snacks.input - added
snacks.scroll - added
snacks.indent - added
snacks.scope - added
snacks.dim - added
snacks.zen - changed default
which-keypreset tohelix - drop
LazyVim.ui.fgin favor ofSnacks.util.color
To disable all animations, add the following to your options.lua:
vim.g.snacks_animate = false
Keymaps
<leader>uzto toggle zen mode<leader>uZ&<leader>wmto toggle zoom mode<leader>uDto toggle dimming<leader>uato toggle animations<leader>uSto toggle scroll<leader>ugto toggle indent guidessnacks.profilerkeymaps under<leader>dp
13.x
LazyVim now uses
Snacks.dashboardas the default dashboard. Check the docs, for more information and examples.A new dashboard-nvim extra is available for those who prefer the old dashboard.
Big new release with a lot of changes and improvements!
The biggest change is the move of a bunch of core features to snacks.nvim and fully integrating it into LazyVim.
I highly suggest having a look at the snacks.nvim documentation to see all the new features and improvements. Most important changes:
Snacks.notifierfor notifications instead ofnvim-notifySnacks.terminalis similar tolazyterm, but has more features and creates bottom splits by default (similar to theedgyintegrating)
12.x
Markdown Extra: headlines.nvim has been removed in favor of markdown.nvim to spice up your markdown files.
nvim-spectre has been removed in favor of grug-far.nvim. grug-far.nvim has a great UI and feels more intuitive to use.
This news is now also available on the website at https://www.lazyvim.org/news
prettier extra now works for all prettier supported filetypes and will be enabled for astro/svelte extra if you have a proper config file with the correct prettier plugin
New Language Support: SQL, Clojure, Thrift, Elm, Gleam, Angular, NuShell, Svelte, Kotlin, Astro, Toml and PHP
New Extras:
copilot-chat,git,octo,inc-renameandneogenThe typescript extra now uses
vtslsinstead oftsserverNeovim >= 0.10 now uses the much faster lazydev.nvim instead of
neodev.nvimmoved
neoconf.nvimto extras. Project specific LSP settings can be done with a.lazy.luafile instead.
11.x
Keymaps:
<leader>gBto open the current repo in the browsergcoandgcOto add a comment below or above the current line<leader>wmto toggle window maximize
lazydev.nvim: faster alternative to
neodev.nvimOptions: Added
linebreak=trueto default options.mini.aiis back as a default plugin! Removing it was a mistake. It's a great plugin that enhances the native text objects.:LazyExtrasnow has multiple new sections:- Enabled: extras that are currently enabled
- Recommended Languages: language extras recommended for the current buffer / directory
- Recommended Plugins: extras that are recommended for most users
- Plugins: other plugin extras
- Languages: other language extras
new option
vim.g.deprecation_warningsto disable deprecation warnings Defaults tofalse. To enable deprecation warnings, set it totruein youroptions.luavim-illuminatemove to extras Document highlights now use native lsp functionality by default
Since Neovim 0.10 has been released, I've been working on a new version of LazyVim that is fully compatible with all the latest Neovim features.
Additionally, some core plugins have been moved to extras.
native snippetsare now the default on Neovim 0.10 Older versions of Neovim will use the newluasnipextra.native commentsare now the default on Neovim 0.10 Older versions of Neovim will use the newmini-commentextra.nvim-ts-context-commentstringhas been integrated in the native comments.inlay hintshave been in LazyVim for a while, but are now enabled by default. To disable them:{
"nvim-lspconfig",
opts = {
inlay_hints = { enabled = false },
}
}plugins moved to extras:
mini.surroundmini.indentscopescopes are now also highlighted withindent-blanklinenvim-treesitter-context
10.x
added new extra for mini.diff This is a plugin similar to gitsigns but with a neat diff overlay that can be toggled with
<leader>go.trouble.nvim has been rewritten from scratch and is now in beta. I've added a new extra for it (
trouble-v3) for those of you who want to try it out. You can find the updated docs hereThe lazygit integration now configures:
- the theme based on the colorscheme
- nerd font icons (v3)
- editor preset is set to
nvim-remotefor better interop with Neovim
The option
vim.g.lazygit_themewas renamed tovim.g.lazygit_configlazygit now automatically uses the colors of your current colorscheme. This is enabled by default. To disable, add the below to your
options.lua:vim.g.lazygit_config = falseAdded support for
basedpyrightto the python extra. Enable in youroptions.luawith:vim.g.lazyvim_python_lsp = "basedpyright"Be aware that
basedpyrightis still in development and may not work exactly the same aspyright.User extras under
lua/plugins/extrascan now also be managed with LazyExtrasnvim-ts-autotagis now included by defaultnvim-treesitter-contextis now included by defaultAdded extra for
symbols-outline.nvimAdded extra for
aerial.nvimnvim-navichas been removed. If you want to keep usingnvim-navic, you can enable the editor.navic extraNew
:LazyExtrascommand for managing LazyVim extrasImproved formatting:
LazyVim can now work with multiple formatters. Types:
- primary: only one primary formatter can be active at a time. (conform, none-ls, LSP)
- secondary: multiple secondary formatters can be active (eslint, ...)
LazyVim automatically selects the primary formatter based on the current available sources and priorities.
New
:LazyFormatcommand for formatting the current selection or bufferNew
:LazyFormatInfocommand for displaying the active formatters for the current bufferAuto-formatting can be disabled with:
vim.g.autoformat = false -- globally
vim.b.autoformat = false -- buffer-local
none-ls.nvimis no longer installed by defaultconform.nvimis now the default formatternvim-lintis now the default linter- If you want to keep using
none-ls.nvim, you can enable the lsp.none-ls extra
dashboard.nvimis the new default dashboard plugin- If you want to keep using
alpha.nvim, you can enable the ui.alpha extra
- If you want to keep using
Improved root detection:
New
:LazyRootcommand that shows info about the root dir detectionConfigurable with
vim.g.root_spec-- LazyVim root dir detection
-- Each entry can be:
-- * the name of a detector function like `lsp` or `cwd`
-- * a pattern or array of patterns like `.git` or `lua`.
-- * a function with signature `function(buf) -> string|string[]`
vim.g.root_spec = { "lsp", { ".git", "lua" }, "cwd" }
-- To disable root detection set to just "cwd"
vim.g.root_spec = { "cwd" }