Skip to content

Repository files navigation

💤 LazyVim

A starter template for LazyVim. Refer to the documentation to get started.

Installation

Warning

This overwrites ~/.config/nvim. If you have an existing Neovim config, back it up first:

mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
git clone https://github.com/itsgitz/nvim ~/.config/nvim

Then install the prerequisites below before first launch — otherwise plugin/LSP installation will fail partway through with missing-tool errors. Once those are in place, just start Neovim and let it bootstrap:

nvim

lazy.nvim installs itself and syncs all plugins on that first run; Mason then installs each language's LSP server the first time you open a file of that type.

Prerequisites

Mason (LazyVim's package manager) will auto-install most LSP servers, but it downloads and runs prebuilt binaries — it does not provide the underlying language runtimes or compilers. Missing tools show up as cryptic LSP/Mason errors on a fresh machine, so install these first.

On Debian/Ubuntu, scripts/install-prereqs.sh automates the apt-installable pieces (build tools, ripgrep, fd, PHP, Composer, Zig) and reports the status of the rest (Node.js, Go, Rust, Python, lazygit — install these with whatever version manager you prefer). It's safe to re-run:

./scripts/install-prereqs.sh

On any other OS, follow the manual table below.

Core (required regardless of language)

Tool Why
Neovim >= 0.11 This config uses vim.lsp.config() (lua/config/options.lua), added in 0.11.
git Plugin manager (lazy.nvim) and Mason both shell out to git.
A Nerd Font Icons in the statusline, file explorer, completion menu, etc. Set it as your terminal font.
ripgrep (rg) Live grep / search in Telescope.
fd (fd-find on Debian/Ubuntu) Fast file finding in Telescope.
A C compiler (gcc or clang) + make Builds telescope-fzf-native and any Mason package compiled from source.
unzip, tar, curl (or wget) Used by Mason to download and extract packages.
Node.js + npm Runtime for several Mason-installed LSP servers (see below) and other npm-based tools.
lazygit (optional) Powers the <leader>gg git UI keymap from LazyVim core.

Language-specific tooling

Only the languages actually configured under lua/plugins/ are listed — each maps to a real LSP/formatter entry, so skipping one for a language you don't use is fine.

Language Config LSP / formatter Needs installed manually
C / C++ c.lua clangd (auto-installed by Mason) A C/C++ toolchain (gcc/clang) on your PATH so clangd can resolve system headers and compile_commands.json builds work.
TypeScript / JavaScript vtsls.lua vtsls (auto-installed by Mason) Node.js + npm (see Core).
Prisma prisma.lua prismals (auto-installed by Mason) Node.js + npm (see Core).
Zig zig.lua zls (auto-installed by Mason) The Zig toolchain on your PATH so zls can resolve the standard library.
PHP / Laravel php.lua, lang-extras.lua intelephense (auto-installed by Mason, via lazyvim.plugins.extras.lang.php) + formatting: Pint → falls back to php-cs-fixer PHP CLI + Composer. On Debian/Ubuntu, prefer the ondrej/php PPA over the distro repo — it packages multiple PHP versions side by side (php8.1, php8.3, ...) switchable via update-alternatives, which the stock repo can't do (scripts/install-prereqs.sh uses it). Pint comes from the project's vendor/bin/pint (run composer require laravel/pint --dev); if it's absent, install php-cs-fixer globally (e.g. composer global require friendsofphp/php-cs-fixer) as the fallback. intelephense itself needs Node.js to run.
Smarty smarty.lua Syntax/indent only (smarty.vim) Nothing extra — pure Vimscript plugin, no external binary.
HTML/CSS (Emmet) emmet.lua emmet-vim Nothing extra — pure Vimscript plugin, no external binary.
Rust lang-extras.lua rust-analyzer (auto-installed by Mason, via lazyvim.plugins.extras.lang.rust) The Rust toolchain (cargo, rustc) on your PATHrust-analyzer needs it to build and analyze your project.
Python lang-extras.lua pyright + ruff (auto-installed by Mason, via lazyvim.plugins.extras.lang.python) Python 3 on your PATH. A per-project virtualenv is picked up automatically if present.
Go lang-extras.lua gopls (auto-installed by Mason, via lazyvim.plugins.extras.lang.go) The Go toolchain on your PATHgopls shells out to it for builds/go.mod resolution.
Svelte lang-extras.lua svelte-language-server (auto-installed by Mason, via lazyvim.plugins.extras.lang.svelte, which pulls in the TypeScript extra too) Node.js + npm (see Core).

Notes

  • :checkhealth and :Mason inside Neovim are the fastest way to confirm what's actually missing after installing the above. You don't need to install any LSP server binary yourself — Mason installs/updates them automatically once the language is configured; you only need the underlying compiler/runtime listed in the table above.
  • Treesitter parsers (lua/plugins/treesitter.lua) are downloaded as precompiled binaries (prefer_git = false), so they don't require a C compiler. ensure_installed covers lua, typescript, javascript, tsx, astro, json, yaml, php, go, html, python, blade, vue, css, c, cpp, bash, graphql, zig, rust, ron, prisma, svelte.
  • Clipboard on a remote/SSH box: lua/config/options.lua sets vim.g.clipboard to use OSC 52 instead of xclip/xsel (which need a local X/Wayland display this box doesn't have). Yanks tunnel through the terminal's escape codes back to your local clipboard — this needs an OSC-52-capable terminal (kitty, WezTerm, iTerm2, Windows Terminal, tmux with set -g allow-passthrough on, ...). No package to install.

About

My NVIM configuration and plugins setting.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages