Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

17 Commits

Repository files navigation

VoidVim

A complete, batteries-included Neovim configuration — minimal to start, but ready for serious daily-driver use.

Philosophy of VoidVim

The philosophy of VoidVim is to stay easy to understand and easy to extend while still covering everything a modern editor is expected to do: real syntax understanding, a fast fuzzy finder, full LSP tooling, formatting, linting, git integration, and debugging — without making assumptions about which language you use.

Every plugin lives in its own file under lua/plugins/, and every plugin defines its own keymaps inside its own config function. If you want to remove a feature, delete its file. If you want to add one, copy the pattern from a neighboring file.


What's included

  • Editing core: Treesitter (syntax highlighting, indentation, folding, text objects), autopairs, smart commenting, surround text objects, fast flash.nvim motions, word-under-cursor highlighting, TODO/FIXME highlighting.
  • LSP: Mason + mason-lspconfig + mason-tool-installer (servers/formatters auto-installed), full keymap set, inlay hints, rich diagnostics with floating windows.
  • Completion: nvim-cmp with LSP, snippet, buffer and path sources, ghost text.
  • Formatting & linting: conform.nvim (format on save) and nvim-lint.
  • Fuzzy finding: Telescope with fzf-native and ui-select.
  • File explorer: neo-tree.
  • Buffers: bufferline tabs at the top.
  • Git: gitsigns (hunk navigation/stage/reset/blame) + vim-fugitive.
  • Debugging: nvim-dap + nvim-dap-ui + mason-nvim-dap (generic; install adapters per-language via Mason).
  • Quick file access: Harpoon.
  • Diagnostics/quickfix UI: Trouble.
  • Session persistence: persistence.nvim.
  • UI polish: tokyonight theme (transparent), lualine, indent guides, noice.nvim + nvim-notify for a nicer cmdline/messages, dressing.nvim, treesitter-context, dashboard.
  • Misc: OSC52 clipboard over SSH, inline color preview.

Installation

Requirements

Before installing VoidVim, make sure the following tools are available on your system:

  • Neovim >= 0.11
  • Git
  • A Nerd Font (and a terminal that's configured to use it)
  • A C compiler + make (needed to build Treesitter parsers and telescope-fzf-native)
  • Ripgrep (rg) — used by Telescope's live grep
  • fd (optional, but speeds up Telescope's file finding)
  • Node.js (optional — only needed if you install LSP servers/formatters that require it, e.g. pyright, prettierd)

Backup Existing Configuration

mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak # removes old plugin installs / lockfile state
mv ~/.local/state/nvim ~/.local/state/nvim.bak # removes old undo history / sessions, optional

Clone VoidVim

git clone https://github.com/parvizsudo/voidvim ~/.config/nvim

Start Neovim

nvim

On first launch, Lazy.nvim will automatically install all plugins, Treesitter parsers will be compiled, and mason-tool-installer will install lua_ls and stylua in the background. Run :Lazy to watch progress, and :Mason any time you want to install more LSP servers, formatters, or linters for your own languages.

Note: the lazy-lock.json from the previous version of this config was removed since it pinned plugins that no longer exist in this config. Lazy will generate a fresh one on first launch — just remember to commit it afterwards if you want reproducible installs.


Keybindings

Leader key: Space


General

KeyAction
<leader>wSave file
<leader>WSave all files
<leader>qQuit window
<leader>QQuit all
<Esc>Clear search highlight
<leader>ttOpen terminal split
<Esc><Esc>Exit terminal mode (in a terminal buffer)

Buffers

KeyAction
<S-l>Next buffer
<S-h>Previous buffer
<leader>bdDelete buffer
<leader>boDelete all other buffers
<leader>bpPick buffer (bufferline)
<leader>bcPick buffer to close

Windows

KeyAction
<C-h> / <C-j> / <C-k> / <C-l>Move between windows
<leader>svSplit vertically
<leader>shSplit horizontally
<leader>seEqualize split sizes
<leader>sxClose split
<C-Up> / <C-Down>Resize height
<C-Left> / <C-Right>Resize width

Editing

KeyAction
J (normal)Join line, keep cursor in place
<C-d> / <C-u>Half-page scroll, centered
n / NNext/previous search result, centered
J / K (visual)Move selection down/up
< / > (visual)Indent, keeping selection
<leader>p (visual)Paste over selection without clobbering the register
ys{motion}Add surround (e.g. ysiw")
cs{old}{new}Change surround
ds{char}Delete surround
S (visual)Surround the selection
gcc / gcToggle line/selection comment
s / SFlash jump / Flash Treesitter selection

File Explorer

KeyAction
<leader>eToggle file explorer (neo-tree)
<leader>EReveal current file in explorer

Telescope (Find)

KeyAction
<leader>ffFind files
<leader>fgLive grep
<leader>fbList open buffers
<leader>fhSearch help tags
<leader>frRecent files
<leader>fwFind word under cursor
<leader>fdFind diagnostics
<leader>fkFind keymaps
<leader>fcFind commands
<leader>fsResume last picker
<leader>/Fuzzy find in current buffer

Harpoon

KeyAction
<leader>haAdd current file
<leader>hhToggle quick menu
<leader>1<leader>4Jump to file 1–4
<C-S-P> / <C-S-N>Previous/next harpoon file

LSP

KeyAction
gdGo to definition
gDGo to declaration
grGo to references
giGo to implementation
gyGo to type definition
KHover documentation
<C-k>Signature help (insert mode)
<leader>rnRename symbol
<leader>caCode action
<leader>lsDocument symbols
<leader>lwWorkspace symbols
<leader>ldLine diagnostics (floating)
<leader>lhToggle inlay hints (if supported)
[d / ]dPrevious/next diagnostic

Formatting & Linting

KeyAction
<leader>lfFormat file or visual selection

Linting runs automatically on save / leaving insert mode for filetypes configured in lua/plugins/lint.lua.

Trouble (diagnostics / quickfix list)

KeyAction
<leader>xxToggle diagnostics (workspace)
<leader>xXToggle diagnostics (buffer only)
<leader>xqToggle quickfix list
<leader>xlToggle location list
[q / ]qPrevious/next quickfix item

Git

KeyAction
]h / [hNext/previous hunk
<leader>gpPreview hunk
<leader>gsStage hunk
<leader>grReset hunk
<leader>gbBlame line
<leader>gdDiff against index
:GitOpen Fugitive Git status window

Debugging (DAP)

Install a debug adapter for your language first (:Mason, e.g. debugpy, delve, codelldb).

KeyAction
<leader>dbToggle breakpoint
<leader>dcStart / Continue
<leader>diStep into
<leader>doStep over
<leader>dOStep out
<leader>drToggle REPL
<leader>dtTerminate
<leader>duToggle DAP UI

Sessions

KeyAction
<leader>SsRestore session for this directory
<leader>SlRestore last session
<leader>SdDon't save the current session

TODO comments

KeyAction
]tJump to next TODO/FIXME comment
[tJump to previous TODO/FIXME comment

Which-Key

Press <leader> and wait to see all available keybindings grouped by category.

Dashboard

The dashboard is shown automatically on startup and gives quick access to finding files, recent files, a new file, restoring your last session, live grep, :Lazy, editing the config, and quitting.


Adding language support

VoidVim makes no assumptions about which languages you use. To add support for a language:

  1. Add its Treesitter parser to ensure_installed in lua/plugins/treesitter.lua (or just open a file of that type — auto_install will grab it automatically).
  2. Add the LSP server / formatter / linter you want to lua/plugins/lsp.lua (mason-tool-installer's ensure_installed), lua/plugins/conform.lua (formatters_by_ft), and lua/plugins/lint.lua (linters_by_ft).
  3. Restart Neovim, or run :MasonToolInstallerInstall.

Contributing to VoidVim

You can contribute to VoidVim by opening issues or pull requests.

If you have an idea that will keep VoidVim simple and extensible, open an issue.


License of VoidVim

VoidVim is licensed under the GPLv3 license.

About

Yet another Neovim Configuration

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages