Website: https://milianor03.github.io/zenvim
A minimal, modern Neovim distro. The spiritual successor to
LunarVim — engineered so you can stop configuring and
start ;f-ing around.
z e n v i m
_ _
| \ | | ___
| \| |/ _ \
| |\ | __/
|_| \_|\___|
- Fast — lazy.nvim, lazy-loaded plugins, no startup noise.
- Beautiful out of the box — base46-powered
13 themes:
onedark,solarized,darkplus,carbonfox,gruvbox,dracula,tokyonight,oxocarbon,monokai-pro,horizon,doom-one,gruber-darker,tomorrow-night. Switch live with;y. - Zero-friction LSP — Mason + lspconfig wired for 20+ servers out of the box.
- You are the config — a single
config.luato bend it to your will.
- Neovim >= 0.12
git,makeand a C compiler (for parser/plugin builds), and Nerd Fonts for icons
bash <(curl -s https://raw.githubusercontent.com/milianor03/zenvim/main/installer/install.sh)or clone + symlink it yourself:
git clone --depth 1 https://github.com/milianor03/zenvim ~/.config/zenvim
ln -s ~/.config/zenvim ~/.config/nvim # back up any existing config first!
nvimFirst launch clones lazy.nvim and every plugin automatically. Around ~12ms startup. Vim your way home.
Everything lives in config.lua at the repo root. Return a table overriding
any built-in default — the merge happens before plugins load:
return {
leader = ' ',
colorscheme = 'solarized',
transparency = true,
keys = {
{ lhs = '<leader>ff', rhs = '<cmd>Telescope find_files<cr>', desc = 'find files' },
},
plugins = {
{ 'folke/todo-comments.nvim', opts = {} },
},
lsp = {
servers = { 'lua_ls', 'gopls', 'ts_ls' },
},
}Defaults live in lua/zenvim/config.lua — read it, gut it, own it.
; is the leader.
| Keys | Action |
|---|---|
;f |
Find file (Telescope) |
;tg |
Live grep |
;tc |
Themes |
;y |
Pick theme (:ZenTheme) |
;e |
Neo-tree (float) |
;x |
Toggle terminal |
;w / ;q |
Save / close |
;li |
LSP implementation |
;ld |
LSP definition |
;la |
Code action |
;do |
Open diagnostics float |
ss/sv |
Split / vsplit |
Alt+←/→ |
Buffer cycle |
Alt+↑ |
Buffer picker |
Alt+↓ |
Close buffer |
Formatters via conform (stylua, prettierd, goimports, gofmt, ruff…), snippets via friendly-snippets, inlay hints + code lens on attach, and organize-imports-on-save for Go. Servers ship with per-server settings for gopls, denols, ts_ls, lua_ls, emmet_ls, jsonls (SchemaStore) and jdtls.
13 hand-tuned palettes live in lua/zenvim/palettes/ and run on
maxmx03/base46. Each palette declares a
base_30, a base_16 and semantic colors that map onto UI, syntax, git
signs and plugin highlights, plus per-theme groups overrides. Thin one-line
wrappers in colors/ (require('zenvim.theme').apply_palette 'onedark')
make each one a valid :colorscheme.
Bundled: onedark, solarized, darkplus, carbonfox, gruvbox,
dracula, tokyonight, oxocarbon, monokai-pro, horizon, doom-one,
gruber-darker, tomorrow-night.
Add your own:
-- lua/zenvim/palettes/vscode.lua
local palette = { name = 'vscode', none = 'NONE', blue = '#569cd6', -- ... }
return palette-- colors/vscode.lua
require('zenvim.theme').apply_palette 'vscode'then put 'vscode' in themes and set it as colorscheme.
├── config.lua ← your config (user override)
├── colors/ ← thin :colorscheme wrappers (13 themes)
├── installer/install.sh ← install / symlink to ~/.config/nvim
├── lua/zenvim/
│ ├── init.lua ← entry: merges your config, boots core + lazy
│ ├── config.lua ← built-in defaults
│ ├── bootstrap.lua ← lazy.nvim setup
│ ├── core/init.lua ← options, keymaps, autocmds
│ ├── theme.lua ← base46 wiring, :ZenTheme
│ ├── palettes/ ← hand-tuned base46 palettes (13)
│ ├── lsp.lua ← diagnostics + per-server settings
│ └── plugins/ ← lazy specs, one concern per file
└── tests/smoke.sh ← headless smoke test (also runs in CI)
make test # headless smoke test
make lint # luacheck lua/- LunarVim — the inspiration.
- maxmx03/base46 — the theme engine.
- Neovim, lazy.nvim and the plugin ecosystem that made this tiny.