- Notifications
You must be signed in to change notification settings - Fork0
🍿 A collection of small QoL plugins for Neovim
License
nipunlakshank/snacks.nvim
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
A collection of small QoL plugins for Neovim.
| Snack | Description | Setup |
|---|---|---|
| animate | Efficient animations including over 45 easing functions(library) | |
| bigfile | Deal with big files | |
| bufdelete | Delete buffers without disrupting window layout | |
| dashboard | Beautiful declarative dashboards | |
| debug | Pretty inspect & backtraces for debugging | |
| dim | Focus on the active scope by dimming the rest | |
| git | Git utilities | |
| gitbrowse | Open the current file, branch, commit, or repo in a browser (e.g. GitHub, GitLab, Bitbucket) | |
| indent | Indent guides and scopes | |
| input | Bettervim.ui.input | |
| lazygit | Open LazyGit in a float, auto-configure colorscheme and integration with Neovim | |
| notifier | Prettyvim.notify | |
| notify | Utility functions to work with Neovim'svim.notify | |
| profiler | Neovim lua profiler | |
| quickfile | When doingnvim somefile.txt, it will render the file as quickly as possible, before loading your plugins. | |
| rename | LSP-integrated file renaming with support for plugins likeneo-tree.nvim andmini.files. | |
| scope | Scope detection, text objects and jumping based on treesitter or indent | |
| scratch | Scratch buffers with a persistent file | |
| scroll | Smooth scrolling | |
| statuscolumn | Pretty status column | |
| terminal | Create and toggle floating/split terminals | |
| toggle | Toggle keymaps integrated with which-key icons / colors | |
| util | Utility functions for Snacks(library) | |
| win | Create and manage floating windows or splits | |
| words | Auto-show LSP references and quickly navigate between them | |
| zen | Zen mode • distraction-free coding |
- Neovim >= 0.9.4
- for proper icons support:
- mini.icons(optional)
- nvim-web-devicons(optional)
- aNerd Font(optional)
Install the plugin with your package manager:
Important
A couple of pluginsrequiresnacks.nvim to be set-up early.Setup creates some autocmds and does not load any plugins.Check thecode to see what it does.
Caution
You need to explicitly pass options for a plugin or setenabled = true to enable it.
Tip
It's a good idea to run:checkhealth snacks to see if everything is set up correctly.
{"folke/snacks.nvim",priority=1000,lazy=false,---@typesnacks.Configopts= {-- your configuration comes here-- or leave it empty to use the default settings-- refer to the configuration section belowbigfile= {enabled=true },dashboard= {enabled=true },indent= {enabled=true },input= {enabled=true },notifier= {enabled=true },quickfile= {enabled=true },scroll= {enabled=true },statuscolumn= {enabled=true },words= {enabled=true }, },}For an in-depth setup ofsnacks.nvim withlazy.nvim, check theexample below.
Please refer to the readme of each plugin for their specific configuration.
Default Options
---@classsnacks.Config---@fieldanimate?snacks.animate.Config---@fieldbigfile?snacks.bigfile.Config---@fielddashboard?snacks.dashboard.Config---@fielddim?snacks.dim.Config---@fieldgitbrowse?snacks.gitbrowse.Config---@fieldindent?snacks.indent.Config---@fieldinput?snacks.input.Config---@fieldlazygit?snacks.lazygit.Config---@fieldnotifier?snacks.notifier.Config---@fieldprofiler?snacks.profiler.Config---@fieldquickfile?snacks.quickfile.Config---@fieldscope?snacks.scope.Config---@fieldscratch?snacks.scratch.Config---@fieldscroll?snacks.scroll.Config---@fieldstatuscolumn?snacks.statuscolumn.Config---@fieldterminal?snacks.terminal.Config---@fieldtoggle?snacks.toggle.Config---@fieldwin?snacks.win.Config---@fieldwords?snacks.words.Config---@fieldzen?snacks.zen.Config---@fieldstyles?table<string,snacks.win.Config>{}
Some plugins have examples in their documentation. You can include them in yourconfig like this:
{dashboard= {example="github"}}If you want to customize options for a plugin after they have been resolved, youcan use theconfig function:
{gitbrowse= {config=function(opts,defaults)table.insert(opts.remote_patterns, {"my","custom pattern"})end },}See the example below for how to configuresnacks.nvim.
{"folke/snacks.nvim",priority=1000,lazy=false,---@typesnacks.Configopts= {bigfile= {enabled=true },dashboard= {enabled=true },indent= {enabled=true },input= {enabled=true },notifier= {enabled=true,timeout=3000, },quickfile= {enabled=true },scroll= {enabled=true },statuscolumn= {enabled=true },words= {enabled=true },styles= {notification= {-- wo = { wrap = true } -- Wrap notifications } } },keys= { {"<leader>z",function()Snacks.zen()end,desc="Toggle Zen Mode"}, {"<leader>Z",function()Snacks.zen.zoom()end,desc="Toggle Zoom"}, {"<leader>.",function()Snacks.scratch()end,desc="Toggle Scratch Buffer"}, {"<leader>S",function()Snacks.scratch.select()end,desc="Select Scratch Buffer"}, {"<leader>n",function()Snacks.notifier.show_history()end,desc="Notification History"}, {"<leader>bd",function()Snacks.bufdelete()end,desc="Delete Buffer"}, {"<leader>cR",function()Snacks.rename.rename_file()end,desc="Rename File"}, {"<leader>gB",function()Snacks.gitbrowse()end,desc="Git Browse",mode= {"n","v"} }, {"<leader>gb",function()Snacks.git.blame_line()end,desc="Git Blame Line"}, {"<leader>gf",function()Snacks.lazygit.log_file()end,desc="Lazygit Current File History"}, {"<leader>gg",function()Snacks.lazygit()end,desc="Lazygit"}, {"<leader>gl",function()Snacks.lazygit.log()end,desc="Lazygit Log (cwd)"}, {"<leader>un",function()Snacks.notifier.hide()end,desc="Dismiss All Notifications"}, {"<c-/>",function()Snacks.terminal()end,desc="Toggle Terminal"}, {"<c-_>",function()Snacks.terminal()end,desc="which_key_ignore"}, {"]]",function()Snacks.words.jump(vim.v.count1)end,desc="Next Reference",mode= {"n","t"} }, {"[[",function()Snacks.words.jump(-vim.v.count1)end,desc="Prev Reference",mode= {"n","t"} }, {"<leader>N",desc="Neovim News",function()Snacks.win({file=vim.api.nvim_get_runtime_file("doc/news.txt",false)[1],width=0.6,height=0.6,wo= {spell=false,wrap=false,signcolumn="yes",statuscolumn="",conceallevel=3, }, })end, } },init=function()vim.api.nvim_create_autocmd("User", {pattern="VeryLazy",callback=function()-- Setup some globals for debugging (lazy-loaded)_G.dd=function(...)Snacks.debug.inspect(...)end_G.bt=function()Snacks.debug.backtrace()endvim.print=_G.dd-- Override print to use snacks for `:=` command-- Create some toggle mappingsSnacks.toggle.option("spell", {name="Spelling"}):map("<leader>us")Snacks.toggle.option("wrap", {name="Wrap"}):map("<leader>uw")Snacks.toggle.option("relativenumber", {name="Relative Number"}):map("<leader>uL")Snacks.toggle.diagnostics():map("<leader>ud")Snacks.toggle.line_number():map("<leader>ul")Snacks.toggle.option("conceallevel", {off=0,on=vim.o.conceallevel>0andvim.o.conceallevelor2 }):map("<leader>uc")Snacks.toggle.treesitter():map("<leader>uT")Snacks.toggle.option("background", {off="light",on="dark",name="Dark Background"}):map("<leader>ub")Snacks.toggle.inlay_hints():map("<leader>uh")Snacks.toggle.indent():map("<leader>ug")Snacks.toggle.dim():map("<leader>uD")end, })end,}Click to see all highlight groups
| Highlight Group | Default Group | Description |
|---|---|---|
| SnacksNormal | NormalFloat | Normal for the float window |
| SnacksWinBar | Title | Title of the window |
| SnacksBackdrop | none | Backdrop |
| SnacksNormalNC | NormalFloat | Normal for non-current windows |
| SnacksWinBarNC | SnacksWinBar | Title for non-current windows |
| SnacksScratchKey | DiagnosticVirtualText | Keymap help in the footer |
| SnacksScratchDesc | DiagnosticInfo | Keymap help desc in the footer |
| SnacksNotifierInfo | none | Notification window for Info |
| SnacksNotifierWarn | none | Notification window for Warn |
| SnacksNotifierDebug | none | Notification window for Debug |
| SnacksNotifierError | none | Notification window for Error |
| SnacksNotifierTrace | none | Notification window for Trace |
| SnacksNotifierIconInfo | none | Icon for Info notification |
| SnacksNotifierIconWarn | none | Icon for Warn notification |
| SnacksNotifierIconDebug | none | Icon for Debug notification |
| SnacksNotifierIconError | none | Icon for Error notification |
| SnacksNotifierIconTrace | none | Icon for Trace notification |
| SnacksNotifierTitleInfo | none | Title for Info notification |
| SnacksNotifierTitleWarn | none | Title for Warn notification |
| SnacksNotifierTitleDebug | none | Title for Debug notification |
| SnacksNotifierTitleError | none | Title for Error notification |
| SnacksNotifierTitleTrace | none | Title for Trace notification |
| SnacksNotifierBorderInfo | none | Border for Info notification |
| SnacksNotifierBorderWarn | none | Border for Warn notification |
| SnacksNotifierBorderDebug | none | Border for Debug notification |
| SnacksNotifierBorderError | none | Border for Error notification |
| SnacksNotifierBorderTrace | none | Border for Trace notification |
| SnacksNotifierFooterInfo | DiagnosticInfo | Footer for Info notification |
| SnacksNotifierFooterWarn | DiagnosticWarn | Footer for Warn notification |
| SnacksNotifierFooterDebug | DiagnosticHint | Footer for Debug notification |
| SnacksNotifierFooterError | DiagnosticError | Footer for Error notification |
| SnacksNotifierFooterTrace | DiagnosticHint | Footer for Trace notification |
| SnacksDashboardNormal | Normal | Normal for the dashboard |
| SnacksDashboardDesc | Special | Description text in dashboard |
| SnacksDashboardFile | Special | Dashboard file items |
| SnacksDashboardDir | NonText | Directory items |
| SnacksDashboardFooter | Title | Dashboard footer text |
| SnacksDashboardHeader | Title | Dashboard header text |
| SnacksDashboardIcon | Special | Dashboard icons |
| SnacksDashboardKey | Number | Keybind text |
| SnacksDashboardTerminal | SnacksDashboardNormal | Terminal text |
| SnacksDashboardSpecial | Special | Special elements |
| SnacksDashboardTitle | Title | Title text |
About
🍿 A collection of small QoL plugins for Neovim
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Languages
- Lua99.8%
- Other0.2%