<p align="center" <img src="assets/logo.svg" alt="rvpm — Rust-based Vim Plugin Manager" width="560" </p
rvpm
Rust-based Vim Plugin Manager — a fast, pre-compiled plugin manager for Neovim
rvpm clones plugins in parallel, links merge = true plugins into a single runtime-path entry, and ahead-of-time compiles a static loader.lua that sources everything without any runtime glob cost.
Demo
init → add → list → b browse → Enter add → l back → S sync
Startup profile
rvpm profile — per-plugin phase breakdown in a TUI: banner + phase timeline + plugin table + selected-plugin file detail. Keys: j/k navigate · g/G top/bottom · s cycle sort · h hide groups · f require-tree threshold · c require-tree sort · ? help · q quit.
Selecting the [user config] pseudo-plugin swaps the detail pane for a require tree of your init.lua: a stack-based tracer wraps G.require for the run, captures vim.uv.hrtime() deltas per module, and renders the result depth-indented in the pane. Useful when [user config] is one of the heaviest rows and you want to find the offending require(...).
Why rvpm?
- CLI-first — manage plugins from your terminal, not from inside Neovim
- TOML config with Tera templates — declarative, conditional, and shareable across machines
- Pre-compiled loader — rvpm generate walks plugin directories at CLI
time and bakes file lists into loader.lua; Neovim startup is a fixed list of dofile() / source calls with zero runtime glob
- Full lazy-loading — oncmd, onft, onmap, onevent, onpath,
onsource, plus auto-detected ColorSchemePre and depends-aware loading
- File-level merge — merge = true plugins share a single rtp entry via
per-file hard links; namespace collisions surface in a first-wins summary
- Plugin discovery TUI — rvpm browse walks the GitHub neovim-plugin
topic with live README preview; Enter to install