Note: I am no longer using slowly. It does work, but I have moved on to using Nix and Home Manager instead.
Slowly is a Neovim plugin manager for people who value simplicity over speed.
It is neither blazingly fast nor the most advanced solution, but rather the
bare minimum of what I need. Slowly handles installing, updating, and
reinstalling plugins using git
. It does not do anything fancy. I used
packer.nvim for awhile,
and if you want the kitchen sink included, you should use Packer instead.
Here's a friendly comparison of Slowly to other plugin managers:
Advantages | Disadvantages |
---|---|
You can acually understand what is happening | Plugin works slowly |
Simple and easy to use | Only basic features |
Few dependencies, install is copying one file | No flashy animations |
- A Unix-like environment
- Neovim v0.8.0 or newer (or older?)
git
v2.38.0 or newer (or older?)GNU tar
v1.34 or newer (or older? or BSD?)GNU gzip
v1.12 or newer (or older? or BSD?)
Copy the ./lua/slowly.lua
file from this repository to
~/.config/nvim/lua/slowly.lua
. Or, put this repository somewhere
on your runtime path. Then write an ~/.config/nvim/init.lua
like this:
local example_condition = false
require('slowly').setup({
disabled_builtins = {
'netrw',
'netrwPlugin',
'netrwSettings',
'netrwFileHandlers'
},
plugins = {
{url = 'https://github.com/nvim-lua/plenary.nvim', start = true},
{url = 'https://github.com/elihunter173/dirbuf.nvim', start = true},
{url = 'https://github.com/nat-418/bufala.nvim'},
{url = 'https://github.com/nat-418/tabbot.nvim'}
}
})
require('dirbuf').setup {
show_hidden = false,
sort_order = 'directories_first',
write_cmd = 'DirbufSync -confirm',
}
if example_condition then
vim.cmd.packadd('bufala.nvim'); require('bufala').setup()
vim.cmd.packadd('tabbot.nvim'); require('tabbot').setup()
end
In this example we want to replace the old vim default plugin netrw
with
the excellent dirbuf.nvim,
and we want dirbuf
to be loaded automatically on startup along with
plenary
—a common dependency required by other plugins. We also install a
few optional plugins and then explicitly load them only when
example_condition
is met.
Slowly provides a single command :Slowly
with a few subcommands:
:Slowly list
to show what is currently installed.:Slowly install
togit clone
plugins configured in thesetup
options.:Slowly update
togit pull
plugins configured in thesetup
options.:Slowly save
to make a tarball of installed plugins.:Slowly restore
to delete all plugins and reload from thesave
tarball.:Slowly clean
to remove installed plugins not listed insetup
options.:Slowly reinstall
to delete all configured plugins and clone them again.
Note: :Slowly update
will automatically :Slowly save
before
git pull
-ing. That way if something bad happens as a result of the update,
you can easily do a :Slowly restore
and quickly get back to a sane state.
Only one save tarball can exist at a time. If you need more advancded
snapshotting and backups, ask your filesystem.
Slowly's setup
function can accept the following configuration options:
disabled_builtins
Builtin Neovim plugins to disableinstall_path
defaults to~/.local/share/nvim/site/pack/slowly/
save_path
defaults to~/.cache/nvim/slowly/
plugins
is a list of plugin tables with the following values:url
required field of the fully-qualifiedgit
URL stringstart
optional boolean to direct plugin to install instart/
*checkout
optional string for a tag, branch, or commit to checkoutrun
optional string of a shell script to run after git commands
Note: by default, all plugins install to opt/
.