A fast, modern Neovim configuration written entirely in Lua. Designed for web development with a transparent Catppuccin Mocha theme, VS Code-like muscle memory, native LSP integration, full Treesitter parsing, AI-assisted coding, and zero unnecessary bloat.
If you are new to Neovim, these symbols and letters in configs and keymap guides can seem cryptic. Here is what every symbol means:
In Vim and Neovim, the Leader key is a custom prefix key used to trigger shortcuts without conflicting with standard typing.
- In this configuration,
<leader>is set to the Spacebar (). - Whenever you see
<leader>fforSpace f f, it means: press and releaseSpace, then pressf, then pressf.
| Notation | Meaning | Example |
|---|---|---|
<leader> |
The Spacebar ( ) |
<leader>e = Space then e |
<C-...> |
Ctrl key | <C-s> = Ctrl + S, <C-/> = Ctrl + /, <C-n> = Ctrl + N |
<S-...> |
Shift key | <S-h> = Shift + H (capital H), <S-F12> = Shift + F12 |
<A-...> or <M-...> |
Alt (Meta) key | <A-j> = Alt + J or Alt + Down (move line down) |
<CR> |
Enter / Return key (Carriage Return) |
:w<CR> = type :w and hit Enter |
<Esc> |
Escape key | Return to Normal mode |
<Tab> / <S-Tab> |
Tab / Shift + Tab | Next / previous field or suggestion |
<BS> |
Backspace key | Delete character backwards |
<cmd>...<CR> |
Run an internal command silently without showing the command line prompt |
In Neovim configs, map("n", ...) tells Neovim in which mode a shortcut works:
"n"= Normal Mode: The default navigation mode. Pressing keys moves the cursor, deletes, copies, or runs commands (it does not type text into the file). PressEscanytime to get back here."i"= Insert Mode: Text editing mode. You type characters directly into your file just like in VS Code or Notepad. Enter withiora, exit withEsc."v"or"x"= Visual Mode: Text selection mode. Allows you to highlight characters, lines, or blocks of code with your keyboard."t"= Terminal Mode: The interactive terminal shell inside Neovim (e.g. ToggleTerm).map({ "n", "i", "x" }, "<C-s>", ...): MeansCtrl + Ssaves your file whether you are in Normal, Insert, or Visual mode!
| Category | What's included |
|---|---|
| π¨ UI | Catppuccin Mocha (transparent), Alpha dashboard, Bufferline (with offsets & LSP indicators), Lualine, Dropbar (breadcrumbs) |
| ποΈ Navigation | Snacks Explorer sidebar, Snacks Picker (fuzzy finder, grep, buffers, commands), Oil.nvim (- or <leader>o) |
| π§ LSP | Mason (installer), nvim-lspconfig (native vim.lsp.config), Blink.cmp, Conform (auto-format on save) |
| π³ Syntax | Treesitter syntax highlighting & indentation, Treesitter Context (sticky scroll), autotag (auto-close & rename HTML/JSX tags) |
| π Diagnostics & Search | Tiny-inline-diagnostic, Trouble.nvim (<leader>dt / <leader>xx), Grug-far (<leader>sr project search & replace) |
| π€ AI | GitHub Copilot (inline ghost text), CopilotChat (floating chat) |
| πΏ Git | Gitsigns (gutter indicators), Git-blame (inline commit details) |
| π» Terminal | ToggleTerm bottom panel (<leader>t or `Ctrl+``) |
| β¨ Editing | Comment.nvim (Ctrl+/), Mini.nvim (pairs, move, ai, surround, icons), Highlight-colors (CSS swatches), Neoscroll, SmoothCursor, Visual-Multi |
| πΎ Sessions | Persistence.nvim (<leader>qs restore session, button on Alpha dashboard) |
| π Web Dev | Emmet LSP (properly scoped to markup/JSX), Markdown Preview (<leader>mp), Live Server (<leader>ls), non-intrusive auto-save |
~/.config/nvim/
βββ init.lua β entry point (loads bytecode cache, options, keymaps, autocmds, plugins)
βββ lua/
β βββ core/
β β βββ options.lua β editor settings (tabs, scrolloff, clipboard, timeoutlen, winborder)
β β βββ keymaps.lua β all keybindings (leader, picker, VS Code muscle memory)
β β βββ autocmds.lua β UI state machine (Explorer β Alpha, safe ghost-save, yank highlight)
β βββ plugins/
β βββ init.lua β lazy.nvim bootstrap + disabled built-in plugins (rtp)
β βββ snacks.lua β Explorer, Picker, Notifier, Indent guides, Zen mode
β βββ ui.lua β Catppuccin, Alpha, Bufferline, Lualine, ToggleTerm, Oil, Dropbar, Trouble, Persistence
β βββ lsp.lua β Mason, LSPconfig, Conform, Blink.cmp, Tiny-inline-diagnostic
β βββ editor.lua β Treesitter, Sticky Scroll, Autotag, Mini suite, Comment.nvim, Grug-far, Highlight-colors
β βββ git.lua β Gitsigns, Git-blame
β βββ ai.lua β Copilot, CopilotChat
β βββ snippets.lua β LuaSnip + friendly-snippets collection
βββ README.md
βββ GUIDE.md β complete beginner-to-advanced guide
βββ lazy-lock.json
βββ LICENSE
- Neovim 0.11+ or 0.12+ (required for native
vim.lsp.config,vim.lsp.enable,vim.diagnostic.jump, andvim.hl.on_yank).β οΈ Debian 13 / Ubuntu users: Check your package version withapt policy neovim. If your distro repository provides Neovim 0.10 or older, install the official Neovim AppImage or GitHub release tarball. - Node.js 20+ or 22+ (required for Copilot, LSP language servers, and Markdown preview).
- Git, Ripgrep, fd, GCC/Clang, Make, and a Clipboard tool (
xclipon X11 orwl-clipboardon Wayland).
mv ~/.config/nvim ~/.config/nvim.backupgit clone https://github.com/SniperRavan/Neovim.git ~/.config/nvimsudo apt update && sudo apt install -y \
git ripgrep fd-find nodejs npm \
python3 gcc g++ clang curl wget unzip xclipFor Wayland: replace
xclipwithwl-clipboard.
Download and install JetBrainsMono Nerd Font from nerdfonts.com. Set it in your terminal emulator (e.g. Alacritty, Kitty, WezTerm):
# ~/.config/alacritty/alacritty.toml
[font]
normal = { family = "JetBrainsMono Nerd Font", style = "Regular" }nvimPlugins will download and install automatically on first launch. Then install formatters:
:MasonInstall prettier styluaThis configuration optimizes startup time using two native methods:
vim.loader.enable()at the very top ofinit.luafor byte-compiled Lua caching.- Disabling legacy built-in Vim plugins that are not needed for modern web development:
gzip(reading gzip files as buffers)tarPlugin(browsing tar files)tohtml(converting buffers to raw HTML documents)zipPlugin(browsing zip files)
If you need to view .zip or .tar archives inside Neovim:
- Open
lua/plugins/init.lua. - Locate the
performance.rtp.disabled_pluginstable. - Remove or comment out
"zipPlugin"or"tarPlugin":disabled_plugins = { "gzip", -- "tarPlugin", "tohtml", -- "zipPlugin", },
- Restart Neovim.
Leader key: Space
| Key | Action |
|---|---|
Space e |
Toggle file explorer sidebar |
- or Space o |
Open parent directory in Oil (filesystem editor) |
Space w h / j / k / l |
Move focus between split windows |
Ctrl + h / j / k / l |
Direct split window navigation |
| Key | Action |
|---|---|
Space f f |
Find project files (excludes node_modules and .git) |
Space f g |
Live grep (search text inside project files) |
Space f r |
Recent files |
Space f p |
Command palette |
Space f b |
Open buffers |
Space f s |
LSP symbols in current file |
Space f d |
Diagnostics picker |
Space f w |
Grep word under cursor |
Space f k |
Search all active keymaps |
Space g |
Global file search across home directory |
Space s r |
Search & Replace project-wide (Grug-far) |
| Key | Action |
|---|---|
Ctrl + s |
Save file (in Normal, Insert, and Visual modes) |
F2 |
Rename symbol project-wide |
F12 |
Go to definition |
Shift + F12 |
Find all references |
Ctrl + . |
Quick fix / code actions |
Space c f |
Format document (Prettier / Stylua) |
Alt + Up / Down |
Move current line or selection up/down |
Shift + Arrow keys |
Select text character-by-character or line-by-line |
| Key | Action |
|---|---|
Shift-L / Shift-H |
Next / previous buffer tab |
Ctrl-Tab / Ctrl-Shift-Tab |
Next / previous buffer tab |
]b / [b |
Built-in next / previous buffer |
Space x |
Close current buffer (returns to dashboard if last buffer) |
| Key | Action |
|---|---|
Ctrl + / (or Ctrl + _) |
Toggle line comment (JSX/HTML/JS context-aware) |
Space / |
Toggle block comment (/* ... */) |
Ctrl + n |
Multi-cursor (select word, press again for next instance) |
| Key | Action |
|---|---|
Space d n / Space d p |
Next / previous diagnostic error |
Space d d |
Show diagnostic floating popup |
Space d t or Space x x |
Toggle Trouble problems panel |
Space t or `Ctrl + `` |
Toggle bottom terminal panel |
| Key | Action |
|---|---|
Space q s |
Restore session |
Space q l |
Restore last session |
Space q |
Safe quit Neovim (warns if unsaved files exist) |
Space Q |
Force quit Neovim (:qa!) |
:Lazy " Plugin manager interface (updates, profile, health)
:Lazy sync " Synchronize and install all plugins
:Mason " LSP, linter, and formatter manager interface
:MasonInstall prettier stylua
:checkhealth vim.lsp " Verify LSP servers and diagnostics health
:checkhealth " Full Neovim system and plugin health report
:TSUpdate " Update Treesitter syntax parsersFor in-depth explanations, vim motions, text objects, and customization tutorials, read GUIDE.md.