z e n v i m
_ _
| \ | | ___
| \| |/ _ \
| |\ | __/
|_| \_|\___|
A minimal, modern Neovim distro — the spiritual successor to LunarVim. Engineered so you can stop configuring and start ;f-ing around.
bash <(curl -s https://raw.githubusercontent.com/milianor03/zenvim/main/installer/install.sh)
Features
Fast
lazy.nvim with lazy-loaded plugins and zero startup noise. First launch clones everything, then it boots in ~12ms.
Beautiful
base46-powered with 13 hand-tuned themes. Switch live with ;y — try the picker below.
Zero-friction LSP
Mason + lspconfig wired for 20+ servers out of the box, with formatters, snippets and inlay hints on attach.
You are the config
A single config.lua override file bends the whole distro to your will. Read it, gut it, own it.
Themes
Click a palette to preview it live. Every theme is a real base46 palette restored from the original repo —
switch them in Neovim anytime with ;y or :ZenTheme.
Requirements
- Neovim ≥ 0.12
git,makeand a C compiler (for parser/plugin builds)- Nerd Fonts for icons
Install
One-liner
bash <(curl -s https://raw.githubusercontent.com/milianor03/zenvim/main/installer/install.sh)
Manual
git clone --depth 1 https://github.com/milianor03/zenvim ~/.config/zenvim
ln -s ~/.config/zenvim ~/.config/nvim # back up any existing config first!
nvim
First launch clones lazy.nvim and every plugin automatically — around ~12ms startup. Vim your way home.
Your config
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.
Add your own theme
-- 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.
Keymaps
; is the leader. The full source of truth lives in
lua/zenvim/core/keys.lua.
| Keys | Action |
|---|---|
| ;f | Find files (Telescope) |
| ;tt | Find files |
| ;tg | Live grep |
| ;tc | Change theme |
| ;y | Pick theme (:ZenTheme) |
| ;e | Neo-tree (float) |
| ;r | Neo-tree buffers (float) |
| ;x | Toggle terminal |
| ;w / ;q | Save / close |
| Keys | Action |
|---|---|
| ;li | LSP implementation |
| ;ld | LSP definition |
| ;lh | LSP hover |
| ;la | Code action |
| ;do | Diagnostics float |
| ;dl | Diagnostics loclist |
| ss / sv | Split / vsplit |
| Alt+← → | Buffer cycle |
| Alt+↑ / ↓ | Buffer picker / close |
LSP & editing
Out of the box
- Formatters via conform:
stylua,prettierd,goimports,gofmt,ruff… - Snippets via friendly-snippets
- Inlay hints + code lens on attach
- Organize imports on save for Go
- Which-key, autopairs, autotags, blink.cmp completions, flash
Per-server settings
Servers ship with tuned settings for gopls,
denols, ts_ls, lua_ls,
emmet_ls, jsonls (SchemaStore) and
jdtls. Enabled by default: lua_ls,
gopls, ts_ls, gdscript,
gdshader, jsonls, emmet_ls,
html, cssls and marksman.
Structure
├── 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)
Development
make test # headless smoke test
make lint # luacheck lua/
CI runs both on every push — luacheck on Lua 5.1 and a
headless Neovim smoke test that boots the distro, force-loads every plugin
and applies all 13 themes.