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

Options

All options are booleans and default to true, which corresponds to the full profile. The minimal profile (nixvimModules.minimal) sets every option on this page to false with lib.mkDefault, so single options can be switched back on.

Languages

zenvim.languages.<language>.enable switches a language with all of its tooling. Each sub-option defaults to the value of the language switch and can be toggled separately, e.g. zenvim.languages.python.dap.enable = false.

LanguageSub-optionsTooling
lualsp, format, testlua_ls + lazydev, stylua, neotest-plenary
nixlsp, format, lintnil, alejandra, statix
pythonlsp, format, lint, dap, testpyright, isort + ruff_format, ruff, nvim-dap-python, neotest-python
golsp, format, lint, dapgopls, gofmt + golines, staticcheck, nvim-dap-go
rustlsp, format, dap, testrustaceanvim + crates, rustfmt, nvim-dap-lldb (codelldb), neotest-rust
shelllsp, format, lintbash-language-server, shfmt, shellcheck
htmllsp, formatvscode-html-language-server, prettierd (html, htmldjango)
cssformat, lintprettierd, stylelint
typescriptlsp, format, linttypescript-tools, deno fmt (JS/TS), eslint
sveltelsp, format, lintsvelte-language-server, prettierd, eslint
tailwindlsptailwindcss-language-server
jsonlsp, formatvscode-json-language-server, deno fmt
yamllspyaml-language-server
sqllspsqls
dockerlspdockerfile-language-server
markdownformat, renderdeno fmt, render-markdown

The shared tooling follows the languages: the LSP core (lspconfig, inlay hints, K, <C-k>, <leader>lR, <leader>th), conform, nvim-lint, nvim-dap with dap-ui and neotest with nvim-coverage are only enabled when at least one language uses the respective feature. The DAP status in the winbar follows nvim-dap as well.

Integrations and extras

OptionEnables
zenvim.ai.claudecode.enableclaudecode in a floating snacks terminal (<C-,>)
zenvim.bufferline.enablebufferline with <M-h>, <M-l>, <M-1>…<M-9>, <M-$>
zenvim.miniMap.enablemini.map minimap (<leader>mm)
zenvim.noice.enablenoice UI, macro recording status in the winbar, <leader>na
zenvim.persistence.enablesession management (<leader>ql, <leader>qL, <leader>qd)
zenvim.tacho.enabletyping speed in the winbar
zenvim.pentatonic.enablepentatonic typing sounds
zenvim.duck.enableduck.nvim (<leader>dh, <leader>dc, <leader>dC)
zenvim.cellularAutomaton.enablecellular-automaton (<leader>fml, <leader>gol)

NixOS module

nixosModules.zenvim (also available as nixosModules.default) provides programs.zenvim:

OptionTypeDefaultDescription
programs.zenvim.enableboolfalseInstall zenvim.
programs.zenvim.profile"full" or "minimal""full"Profile the configuration starts from.
programs.zenvim.settingsNixvim module{}Applied on top of the profile, e.g. to toggle zenvim.*.
programs.zenvim.defaultEditorbooltrueSet EDITOR to nvim.
programs.zenvim.packagepackage (read-only)–The resulting package.
programs.zenvim = {
  enable = true;
  profile = "minimal";
  settings = {
    zenvim.languages.nix.enable = true;
    zenvim.languages.nix.lint.enable = false;
    zenvim.tacho.enable = true;
  };
};

Always enabled

snacks, neo-tree, lualine with navic, gitsigns, blink.cmp with ripgrep source, treesitter with all grammars, which-key, nvim-surround, autoclose, nvim-cursorline, tiny-inline-diagnostic, todo-comments, vim-sleuth, direnv, web-devicons and the rose-pine colorscheme.