mirror of
https://github.com/folke/snacks.nvim
synced 2025-12-23 08:47:57 +00:00
294 lines
12 KiB
Text
294 lines
12 KiB
Text
*snacks.nvim.txt* For Neovim Last change: 2024 November 14
|
||
|
||
==============================================================================
|
||
Table of Contents *snacks.nvim-table-of-contents*
|
||
|
||
1. snacks.nvim |snacks.nvim-snacks.nvim|
|
||
- Features |snacks.nvim-snacks.nvim-features|
|
||
- Requirements |snacks.nvim-snacks.nvim-requirements|
|
||
- Installation |snacks.nvim-snacks.nvim-installation|
|
||
- Configuration |snacks.nvim-snacks.nvim-configuration|
|
||
- Usage |snacks.nvim-snacks.nvim-usage|
|
||
- Highlight Groups |snacks.nvim-snacks.nvim-highlight-groups|
|
||
|
||
==============================================================================
|
||
1. snacks.nvim *snacks.nvim-snacks.nvim*
|
||
|
||
A collection of small QoL plugins for Neovim.
|
||
|
||
|
||
FEATURES *snacks.nvim-snacks.nvim-features*
|
||
|
||
-----------------------------------------------------------------------------
|
||
Snack Description Setup
|
||
--------------------- ----------------------------------------------- -------
|
||
bigfile Deal with big files
|
||
|
||
bufdelete Deletebuffers without disrupting window layout
|
||
|
||
debug Pretty inspect & backtraces for debugging
|
||
|
||
git Useful functions for Git
|
||
|
||
gitbrowse Open the repo of the active file in the browser
|
||
(e.g., GitHub)
|
||
|
||
lazygit Open LazyGit in a float, auto-configure
|
||
colorscheme and integration with Neovim
|
||
|
||
notify Utility functions to work with Neovim’s
|
||
vim.notify
|
||
|
||
notifier Better and prettier vim.notify
|
||
|
||
quickfile Whendoing nvim somefile.txt, it will render the
|
||
file as quickly as possible, before loading
|
||
your plugins.
|
||
|
||
rename LSP-integratedfile renaming with support for
|
||
plugins like neo-tree.nvim and mini.files.
|
||
|
||
statuscolumn Pretty statuscolumn
|
||
|
||
terminal Createand toggle floating/split terminals
|
||
|
||
toggle Toggle keymaps integrated with which-key icons
|
||
/ colors
|
||
|
||
win Easily create and manage floating windows or
|
||
splits
|
||
|
||
words Auto-show LSP references and quickly navigate
|
||
between them
|
||
-----------------------------------------------------------------------------
|
||
|
||
REQUIREMENTS *snacks.nvim-snacks.nvim-requirements*
|
||
|
||
- **Neovim** >= 0.9.4
|
||
- for proper icons support:
|
||
- mini.icons <https://github.com/echasnovski/mini.icons> _(optional)_
|
||
- nvim-web-devicons <https://github.com/nvim-tree/nvim-web-devicons> _(optional)_
|
||
- a Nerd Font <https://www.nerdfonts.com/> **(optional)**
|
||
|
||
|
||
INSTALLATION *snacks.nvim-snacks.nvim-installation*
|
||
|
||
Install the plugin with your package manager:
|
||
|
||
|
||
LAZY.NVIM ~
|
||
|
||
|
||
[!important] A couple of plugins **require** `snacks.nvim` to be set-up early.
|
||
Setup creates some autocmds and does not load any plugins. Check the code
|
||
<https://github.com/folke/snacks.nvim/blob/main/lua/snacks/init.lua> to see
|
||
what it does.
|
||
|
||
[!tip] If you don’t need these plugins, you can disable them, or skip `setup`
|
||
altogether.
|
||
>lua
|
||
{
|
||
"folke/snacks.nvim",
|
||
priority = 1000,
|
||
lazy = false,
|
||
opts = {
|
||
-- your configuration comes here
|
||
-- or leave it empty to use the default settings
|
||
-- refer to the configuration section below
|
||
},
|
||
}
|
||
<
|
||
|
||
For an in-depth setup of `snacks.nvim` with `lazy.nvim`, check the example
|
||
<https://github.com/folke/snacks.nvim?tab=readme-ov-file#-usage> below.
|
||
|
||
|
||
CONFIGURATION *snacks.nvim-snacks.nvim-configuration*
|
||
|
||
Please refer to the readme of each plugin for their specific configuration.
|
||
|
||
Default Options ~
|
||
|
||
>lua
|
||
---@class snacks.Config
|
||
---@field bigfile? snacks.bigfile.Config | { enabled: boolean }
|
||
---@field gitbrowse? snacks.gitbrowse.Config
|
||
---@field lazygit? snacks.lazygit.Config
|
||
---@field notifier? snacks.notifier.Config | { enabled: boolean }
|
||
---@field quickfile? { enabled: boolean }
|
||
---@field statuscolumn? snacks.statuscolumn.Config | { enabled: boolean }
|
||
---@field terminal? snacks.terminal.Config
|
||
---@field toggle? snacks.toggle.Config
|
||
---@field styles? table<string, snacks.win.Config>
|
||
---@field win? snacks.win.Config
|
||
---@field words? snacks.words.Config
|
||
{
|
||
styles = {},
|
||
bigfile = { enabled = true },
|
||
notifier = { enabled = true },
|
||
quickfile = { enabled = true },
|
||
statuscolumn = { enabled = true },
|
||
words = { enabled = true },
|
||
}
|
||
<
|
||
|
||
|
||
USAGE *snacks.nvim-snacks.nvim-usage*
|
||
|
||
See the example below for how to configure `snacks.nvim`.
|
||
|
||
>lua
|
||
{
|
||
"folke/snacks.nvim",
|
||
priority = 1000,
|
||
lazy = false,
|
||
---@type snacks.Config
|
||
opts = {
|
||
bigfile = { enabled = true },
|
||
notifier = {
|
||
enabled = true,
|
||
timeout = 3000,
|
||
},
|
||
quickfile = { enabled = true },
|
||
statuscolumn = { enabled = true },
|
||
words = { enabled = true },
|
||
styles = {
|
||
notification = {
|
||
wo = { wrap = true } -- Wrap notifications
|
||
}
|
||
}
|
||
},
|
||
keys = {
|
||
{ "<leader>un", function() Snacks.notifier.hide() end, desc = "Dismiss All Notifications" },
|
||
{ "<leader>bd", function() Snacks.bufdelete() end, desc = "Delete Buffer" },
|
||
{ "<leader>gg", function() Snacks.lazygit() end, desc = "Lazygit" },
|
||
{ "<leader>gb", function() Snacks.git.blame_line() end, desc = "Git Blame Line" },
|
||
{ "<leader>gB", function() Snacks.gitbrowse() end, desc = "Git Browse" },
|
||
{ "<leader>gf", function() Snacks.lazygit.log_file() end, desc = "Lazygit Current File History" },
|
||
{ "<leader>gl", function() Snacks.lazygit.log() end, desc = "Lazygit Log (cwd)" },
|
||
{ "<leader>cR", function() Snacks.rename() end, desc = "Rename File" },
|
||
{ "<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()
|
||
end
|
||
vim.print = _G.dd -- Override print to use snacks for `:=` command
|
||
|
||
-- Create some toggle mappings
|
||
Snacks.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 > 0 and vim.o.conceallevel or 2 }):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")
|
||
end,
|
||
})
|
||
end,
|
||
}
|
||
<
|
||
|
||
|
||
HIGHLIGHT GROUPS *snacks.nvim-snacks.nvim-highlight-groups*
|
||
|
||
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
|
||
|
||
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
|
||
----------------------------------------------------------------------------
|
||
|
||
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>
|
||
|
||
vim:tw=78:ts=8:noet:ft=help:norl:
|