
I have recently been stripping down my Neovim configuration. My goal is to rely more on the built-in features in Neovim. This seems to be a good strategy, as the number of improvements and features organically replaces the plugins I was already using: Neovim 0.10 introduced commenting functionality, native LSP support was added in version 0.11, and Neovim 0.12 provides a built-in plugin manager (vim.pack).
As of this writing, Neovim 0.12 has not been released. However, you can still install the last nightly version, which is what I have done to test vim.pack.
For the last year, I have managed my plugins without a plugin manager by cloning the git repositories for each plugin into the ~/.local/share/nvim/site/pack/plugins/start directory. It worked, but was not ideal. I used Ansible to install and update the plugins (via git pull), but this meant I had to re-run the Ansible playbook every now and then to update the plugins.
With vim.pack I can manage the plugins with a configuration file and API calls. This is what my configuration look likes:
$cat ~/.config/nvim/lua/plugins.lua
vim.pack.add({
"https://github.com/ibhagwan/fzf-lua.git",
"https://github.com/lewis6991/gitsigns.nvim.git",
"https://github.com/pearofducks/ansible-vim.git",
{
src = "https://github.com/catppuccin/nvim.git",
name = "catppuccin",
},
})
require("catppuccin").setup({
transparent_background = true,
})
vim.cmd.colorscheme("catppuccin")
You can create a custom command (PackUpdate, in my case) that updates the plugins:
$cat ~/.config/nvim/lua/commands.lua
vim.api.nvim_create_user_command("PackUpdate", function()
require("vim.pack").update()
end, { desc = "Update all plugins using vim.pack" })
You can checkout the Neovim roadmap here. Version 0.12 is scheduled for release in February 14, 2026.
Leave a Reply