Modern Neovim configuration built on LazyVim with Telescope-driven navigation, Blink completion, and a curated set of language extras for web and systems work.
There might be several tool chains you need to get to get the health checks going, since this a setup that has many of the tooling I use for Rust, TS/JS, Python, LaTeX, Go, etc. You can still customize them to just use what you need.
- Requires Neovim 0.9+ (0.10 recommended for smooth scrolling) and a Nerd Font (icons enabled via
vim.g.have_nerd_font = true). - Back up your existing config, then clone or symlink this repo to
~/.config/nvim. - Install plugins and build dependencies:
nvim --headless "+Lazy sync" +qa. - Launch
:Masonafter the first start to watch LSPs/formatters install (Angular, Astro, Bash, C/C++, CMake, Docker, Elixir, Elm, Ember, Erlang, Go, Haskell, Helm, JSON, Kotlin, Lua, Markdown, Nix, Prisma, Python, Rust, Scala, Solidity, SQL, Svelte, Tailwind, Terraform, TeX, TypeScript, Typst, Vue, YAML, Zig, etc.). - Sanity-check the setup (optional but recommended):
nvim --headless "+Lazy check" +qato validate plugin updates.nvim --headless "+checkhealth" +qaand resolve reported issues.nvim --clean -u init.lua "+Lazy profile"if you need to profile startup time.
mapleaderis<Space>andmaplocalleaderis\.- Colorschemes:
<leader>ucopens:ColorschemeSelectwith curated presets (Tokyo Night, Catppuccin, GitHub Dark, Carbonfox, Gruvbox, OneDark, Kanagawa, Everforest, Rose Pine, Dracula). - Telescope:
<leader>fh→:Telescope help_tags<leader>fd→:Telescope find_filesin the current directory<leader>en→:Telescope find_filesrooted at this config (stdpath("config"))
- Terminal workflow:
<C-\>toggles the floating terminal (toggleterm.nvim)<leader>ttor:Floaterminalopens/closes a dedicated float terminal<Esc><Esc>leaves terminal insert mode:ToggleServerunslive-serveragainst the current file (requires the CLI to be installed)
- Formatting runs on save (
vim.g.autoformat = true); trigger manually with:Format. - Markdown live preview (
iamcco/markdown-preview.nvim)::MarkdownPreview(first run downloads the viewer via the plugin build step).
- Completion:
saghen/blink.cmpwith friendly-snippets, documentation popups on demand (<C-Space>), and Tabnine AI suggestions via the LazyVim Tabnine extra. - Language tooling:
- Mason auto-installs LSPs/formatters/debuggers for Angular, Ansible, Astro, Bash, C/C++, CMake, CSS, Docker, Elixir, Elm, Ember, Erlang, Go, GraphQL, Haskell, Helm, HTML, JavaScript/TypeScript, Kotlin, Lua, Markdown, Nix, Prisma, Python, Rust, Scala, Solidity, SQL, Svelte, Tailwind, Terraform, TeX, Vue, YAML, and Zig (
lua/config/plugins/mason.lua). - Treesitter ships parsers for all major languages (JavaScript/TypeScript/TSX, HTML, CSS, Python, Go, Rust, SQL, Scala, Vue, Svelte, Terraform, etc.) with large-file guards (
lua/config/plugins/treesitter.lua). - Blink completion augments every LSP with AI suggestions via Tabnine and inherits capabilities through
lua/config/plugins/lsp.lua.
- Mason auto-installs LSPs/formatters/debuggers for Angular, Ansible, Astro, Bash, C/C++, CMake, CSS, Docker, Elixir, Elm, Ember, Erlang, Go, GraphQL, Haskell, Helm, HTML, JavaScript/TypeScript, Kotlin, Lua, Markdown, Nix, Prisma, Python, Rust, Scala, Solidity, SQL, Svelte, Tailwind, Terraform, TeX, Vue, YAML, and Zig (
- Treesitter: Installs parsers for web, systems, data, and scripting stacks (JS/TS/TSX, HTML/CSS, Rust, Go, Python, SQL, Terraform, Vue/Svelte, Scala, Kotlin, Zig, etc.) with large-file guards (
lua/config/plugins/treesitter.lua). - UI polish:
- Startup screen via
alpha-nvimwith a custom banner. - Colorscheme selector with tuned presets spanning Tokyo Night, Catppuccin, GitHub Dark, Carbonfox, Gruvbox, OneDark, Kanagawa, Everforest, Rose Pine, Dracula, Nord, Oxocarbon, OneDark Pro, Gruvbox Material, Sonokai, Material Deep Ocean, Monokai Pro, Moonfly, and Nightfly (
lua/config/plugins/colorscheme.lua). - Tailwind-aware color highlighting through
nvim-colorizer.lua. - Smooth animations (Snacks), global statusline, and Nerd Font icons enabled in core options.
- Startup screen via
- Editing niceties: Mini autopairs customized for Markdown/code blocks, four-space indentation defaults, relative line numbers, wrap enabled for prose, and Yanky clipboard extras from LazyVim.
init.lua— sets leaders, enables Nerd Font icons, and bootstraps LazyVim.lua/config/options.lua— single source of editor options and LazyVim globals (autoformatting, picker/complete engine choices, root detection, etc.).lua/config/lazy.lua— Lazy.nvim bootstrap plus plugin spec (LazyVim core, extras, Tabnine, and everything underlua/config/plugins/).lua/config/plugins/*.lua— feature-scoped plugin configs following the LazyVim extension pattern (Telescope, Treesitter, ToggleTerm, colors, LSP, Markdown preview, Tailwind colorizer, etc.).lazy-lock.json— pinned plugin revisions (refresh withnvim --headless "+Lazy sync" +qaafter dependency changes).
- Use
:Lazyfor inspecting plugin state,:Lazy syncafter editing plugin specs, and:Lazy reload config.plugins.<module>or:source %to hot-reload tweaks. - Run
:checkhealthafter LSP or formatter changes and note unresolved warnings before committing. - Only toggle one AI assistant per branch (Tabnine is active; switch by editing the AI extra imports in
lua/config/lazy.lua). - Follow the repository defaults for Lua (
expandtab = true,shiftwidth = 4) and keep helper names insnake_caseto match the existing style. - All plugin and tool versions are locked; nothing updates automatically. Only run
:Lazy sync,:MasonUpdate, or:TSUpdatewhen you intentionally want newer versions (remember to commit the updatedlazy-lock.jsonif you do).