Introduction
snacks.nvim is a collection of small, focused quality-of-life plugins for Neovim bundled into a single package by folke, a prolific Neovim plugin author. Rather than installing many separate plugins, snacks.nvim provides commonly needed utilities under one roof with shared configuration patterns. The repository is folke/snacks.nvim on GitHub with approximately 7,907 stars.
What snacks.nvim Does
snacks.nvim bundles multiple independent modules that each address a common Neovim need. These include a startup dashboard, a notification system, a floating terminal, a file picker, buffer deletion helpers, word highlighting, scroll animations, indent guides, and more. Each module can be enabled or disabled individually, so users pick only what they need.
Architecture Overview
The plugin uses a modular architecture where each feature is a self-contained module within the snacks namespace. A central loader initializes only the modules the user has enabled. Modules share a common configuration pattern and utility layer but do not depend on each other. The Snacks global object provides the API surface, e.g., Snacks.notifier.show(), Snacks.terminal.open(), Snacks.picker.files(). Lazy-loading ensures disabled modules add zero overhead.
Self-Hosting & Configuration
snacks.nvim runs entirely within Neovim. Install the plugin and configure it through the setup opts table. Each module has its own configuration key with sensible defaults. For example, notifier = { timeout = 3000 } configures notification display duration. The dashboard module accepts a preset or custom section layout. No external dependencies are required for core functionality.
Key Features
- Dashboard: customizable startup screen with shortcuts and recent files
- Notifier: notification system replacing vim.notify with history and styling
- Picker: fast file, grep, and buffer picker with preview
- Terminal: floating and split terminal management
- Bufdelete: safe buffer deletion without closing windows
- Words: highlight and navigate LSP references under cursor
- Scroll: smooth scrolling animations
- Indent: animated indent guides and scope highlighting
- Statuscolumn: configurable status column with signs and folds
- Git: git blame line display and log browsing
Comparison with Similar Tools
Unlike installing separate plugins for each feature (alpha-nvim for dashboard, nvim-notify for notifications, telescope for picking), snacks.nvim consolidates these into one package with consistent configuration. Compared to mini.nvim, which also bundles utilities, snacks.nvim focuses on higher-level UI features while mini.nvim covers lower-level text operations and motions. telescope.nvim is a more full-featured picker with an extension ecosystem, whereas snacks.nvim's picker prioritizes speed and simplicity for common use cases.
FAQ
Q: Do I have to use all modules? A: No. Each module is independent. Only enable the ones you want through the setup opts table. Disabled modules are not loaded.
Q: Does snacks.nvim conflict with other plugins? A: Generally no, since modules are independent. If you use nvim-notify separately, disable the snacks notifier module to avoid conflicts. The same applies to other overlapping plugins.
Q: How do I access the picker?
A: Use Snacks.picker.files() for file picking, Snacks.picker.grep() for live grep, or Snacks.picker.buffers() for buffer selection. Bind these to keys in your config.
Sources
- GitHub repository: https://github.com/folke/snacks.nvim
- Documentation: https://github.com/folke/snacks.nvim/blob/main/docs