Skip to content

Repository files navigation

zenvim

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 boxbase46-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.lua to bend it to your will.

Requirements

  • Neovim >= 0.12
  • git, make and a C compiler (for parser/plugin builds), and Nerd Fonts for icons

Install

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!
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.

Keymaps

; 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

LSP

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.

Themes & base46

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.

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/

Credits

  • LunarVim — the inspiration.
  • maxmx03/base46 — the theme engine.
  • Neovim, lazy.nvim and the plugin ecosystem that made this tiny.

License

MIT

About

zenvim — a minimal Neovim distro, spiritual successor to LunarVim, powered by base46 themes.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages