Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Plugins

Each plugin is configured in its own module under nixvim/plugins/. Plugins marked with an option can be switched off (see Options); all others are always part of the configuration.

snacks.nvim

Always enabled. Enabled snacks: animate, bigfile, dim, indent, input, lazygit, notifier, picker, quickfile, scope, scratch (markdown scratch buffers), statuscolumn, terminal and words.

The pickers cover files, grep, buffers, recent projects, undo history, LSP definitions/references/symbols, diagnostics, location and quickfix lists, TODO comments and notifications. See Keymaps.

neo-tree

Always enabled. Opens as a floating window (<C-o>) with rounded borders, shows hidden and ignored files, follows the current file and closes when it is the last window. Inside the tree, l opens and h closes a node.

bufferline

Option zenvim.bufferline.enable. Always visible, slope separators, LSP diagnostic counts per buffer, close button on hover and an offset for the neotest summary. Colors match rose-pine.

mini.map

Option zenvim.miniMap.enable. Minimap with search, diagnostic and gitsigns integrations, toggled with <leader>mm.

persistence.nvim

Option zenvim.persistence.enable. Sessions are stored per directory and git branch under stdpath("state")/sessions/ and only saved when at least one file buffer is open.

Editing

PluginPurpose
blink.cmpCompletion from LSP, path, snippets, buffer and ripgrep; Rust fuzzy matcher
blink-ripgrepProject-wide word completion (from 3 characters, up to 1 MB files, ignore case)
treesitterAll grammars, highlighting, indentation and folding (foldlevel = 99)
autocloseAuto-pairs, disabled when the cursor touches a character
nvim-surroundAdd, change and delete surrounding pairs
nvim-cursorlineHighlights the cursor line number and underlines the word under the cursor (from 3 characters)
todo-commentsHighlights TODO, FIXME & co. and lists them in a picker (<leader>lt)
vim-sleuthDetects indentation from the file
direnvLoads .envrc environments, so project tools are found
which-keyShows available mappings after pressing <leader>

Language tooling

These plugins are only enabled if at least one language uses the respective feature.

PluginEnabled when any language usesNotes
lspconfig + inlay hintslspK hover, <C-k> signature help, <leader>lR restart
conform.nvimformatFormatting on demand with <leader>lf (async)
nvim-lintlintRuns on BufReadPost, BufWritePost and InsertLeave
nvim-dap + nvim-dap-uidapUI at the bottom with console, watches and breakpoints
neotest + nvim-coveragetestRounded floating windows, coverage reloads automatically

UI

lualine and navic

Always enabled. The statusline shows mode, file type and name, git diff, diagnostics, the attached LSP clients, search count, branch, position and file format. The winbar shows the working directory, navic breadcrumbs (depth 3) and, depending on the enabled features, macro recording state (noice), DAP status (any language with dap) and typing speed (tacho).

rose-pine

Always enabled, variant main. The background is transparent unless running in Neovide.

tiny-inline-diagnostic

Always enabled and replaces Neovim’s virtual text: multi-line diagnostics with source, count and icons, disabled in neo-tree.

noice.nvim

Option zenvim.noice.enable. Presets: bottom search, command palette, LSP doc borders, long messages in a split and inc-rename. <leader>na shows the message history.

Git

  • gitsigns (always): signs in the status column, inline blame of the current line, hunk preview, stage and reset.
  • Lazygit (always): opened through snacks with <leader>gg; lazygit is bundled.

AI

claudecode.nvim

Option zenvim.ai.claudecode.enable. Runs Claude Code in a floating snacks terminal (90 % of the screen, rounded border). <C-,> opens or focuses it and, inside the terminal, hides it again. The claude CLI is not bundled.

Just for fun

PluginOptionWhat it does
tacho.nvimzenvim.tacho.enableWords per minute in the winbar
pentatonic.nvimzenvim.pentatonic.enablePlays pentatonic notes while typing (volume 5 %)
duck.nvimzenvim.duck.enableA duck that walks across the buffer
cellular-automatonzenvim.cellularAutomaton.enable“Make it rain” and “Game of life” animations