Skip to content
NoetherVim is alpha. Breaking changes land without deprecation shims. These docs track main.
Dashboard, file picker, a LaTeX buffer, the which-key prefix panel, the keymap diff, and the label picker

NoetherVim

A Neovim distribution with a minimal abstraction layer. LaTeX gets the same first-class treatment as LSP and treesitter, and anything can be overridden in plain Lua.

There are many stable and mature Neovim distributions available: LazyVim, AstroNvim, NvChad and LunarVim are all actively maintained, and kickstart.nvim is the standard launch-pad. If you want a distribution without strong preferences about keymaps or workflows, LazyVim is probably the right pick. It shares the same “use Neovim primitives, no DSL” principle and has the biggest community.

NoetherVim exists for the cases where I wanted a different set of opinions:

Keybindings follow Vim's native prefix conventions, plus one addition

<C-w> for window manipulation, [/] for directional navigation, [o/]o for option toggles, g for goto and LSP actions. <Leader> and <LocalLeader> stay separated (global vs. filetype-specific, per :help maplocalleader), so Vim-flavoured muscle memory transfers intact. The one addition is a search leader, defaulting to <Space>, which owns every fuzzy picker. See Keybinding Philosophy.

The source is the documentation

:NoetherVim files and :NoetherVim grep open the distro’s own source code read-only in the editor, and every plugin spec and bundle leads with a header comment describing what it configures. <CR> on a row of the keymap guide jumps to the line that defined it.

Overriding is scaffolded and checked

:NoetherVim templates writes starting points into lua/user/, and :NoetherVim override seeds one with the upstream spec’s repo strings as commented stubs. diff keymaps, diff options and diff autocmds mark which entries a user config has changed, and :checkhealth noethervim flags any override whose upstream file has moved on.

Vim's own patterns, extended

Vim’s ZZ and ZQ grow into a full Z grid across quit, write, and buffer-delete. <Esc> leaves a mode, and now also clears search highlight, hover floats and stale notifications. Arrow keys duplicate hjkl, so they resize the window instead. <C-]> and the tag stack jump LaTeX labels across subfiles.

LaTeX, BibTeX and VimTeX are first-class

The distro ships custom Snacks-based label and heading pickers, snippets, BibTeX and Zotero citation tooling, and adds 1000+ mathematical terms and names to the spell dictionary. See the onboarding guide for mathematicians.

Bundles cover non-coding work

writing/ (obsidian, neorg, markdown), practice/ (training, hardtime, presentation) and terminal/ (tmux, remote-dev) are first-class categories alongside languages/ and tools/.

Neovim 0.12 ships a built-in package manager (vim.pack), but NoetherVim stays on lazy.nvim because the override model (deep-merged opts, auto-imported bundle directories, lazy-loading via event/keys/cmd/ft) depends on its spec system; vim.pack is a plain installer and doesn’t provide that layer yet.

There is a personal reason too. After ten years of Vim and Neovim my dotfiles had grown to roughly 10k lines, so this is partly a project to turn that personal setup into something other people can use.

Terminal window
mkdir -p ~/.config/nvim
curl -fLo ~/.config/nvim/init.lua https://raw.githubusercontent.com/Chiarandini/NoetherVim/main/init.lua.example
nvim

Then read your first session, or jump straight to the onboarding guide for mathematicians if that is what brought you here.