For years, there has been an unwritten hierarchy in the Vim/Neovim community: Linux > macOS >>> Windows.

If you’ve ever tried to set up a proper Neovim environment on Windows, you know the pain. You install Neovim, and immediately you’re hit with errors:

  • “Treesitter requires a C compiler.”
  • “Telescope is slow—where is ripgrep?”
  • “Why are my file icons just empty rectangles?”

Compared to the brew install or pacman -S experience on Unix systems, Windows has historically felt clunky. However, with the maturity of Windows Terminal, PowerShell, and package managers like Scoop, that era is over.

Today, we are going to build a blazingly fast, modern IDE experience on native Windows using LazyVim. No WSL2 required, no virtual machines—just pure, high-performance editing.

Why LazyVim?

If you want to write code rather than spend weeks writing Lua configuration scripts, you need a “Neovim Distribution.”

LazyVim is currently the gold standard. It is built on top of lazy.nvim (the fastest plugin manager) and offers:

  • Incredible Speed: Plugins load lazily (on-demand).
  • Sane Defaults: It comes with pre-configured LSP, formatting, linting, and syntax highlighting.
  • Modern UI: It looks beautiful right out of the box.

Phase 1: The Toolchain (The Secret Sauce)

The #1 reason Neovim setups fail on Windows isn’t Neovim itself—it’s the missing dependencies. To manage these gracefully, we will use Scoop, a command-line installer for Windows.

1. Install Scoop

Open PowerShell (not cmd.exe) and run:

powershell

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex

2. Install the “Essentials”

We need to install Neovim, a C compiler (for Treesitter), and the search tools that power the interface. Run this command:

powershell

scoop bucket add extras
scoop install neovim gcc ripgrep fd lazygit make

Why do we need these?

  • gcc: Crucial. nvim-treesitter needs this to compile language parsers. Without it, you get no syntax highlighting.
  • ripgrep (rg): Powers the Telescope fuzzy finder. It makes searching through thousands of files instant.
  • fd: A faster alternative to the find command.
  • lazygit: A terminal UI for Git. LazyVim integrates this perfectly.
  • make: Required to build extensions like telescope-fzf-native.

3. Terminal & Fonts

Do not use the legacy Command Prompt. Download Windows Terminal from the Microsoft Store.

Next, Neovim needs a Nerd Font to render icons properly.

  1. Download a font like JetBrainsMono Nerd Font.
  2. Install it in Windows.
  3. Open Windows Terminal Settings -> Defaults -> Appearance, and set the font to the one you just installed.

Phase 2: Installing LazyVim

With the environment prepped, installing LazyVim is trivial.

1. Back up existing configs

If you have tried Neovim before, move your old config out of the way:

powershell

mv $env:LOCALAPPDATA\nvim $env:LOCALAPPDATA\nvim.bak
mv $env:LOCALAPPDATA\nvim-data $env:LOCALAPPDATA\nvim-data.bak

2. Clone the Starter Template

powershell

git clone https://github.com/LazyVim/starter $env:LOCALAPPDATA\nvim

3. Detach from the Upstream Git

Remove the .git folder so you can make this your own repository later:

powershell

rm -Recurse -Force $env:LOCALAPPDATA\nvim\.git

4. Launch

Type nvim in your terminal.
You will see LazyVim pulling down plugins. Be patient. Once it finishes, you will be greeted by the dashboard.


Phase 3: Troubleshooting Windows “Gotchas”

Even with a perfect setup, Windows can be quirky. Here is how to solve the most common issues.

Issue 1: Treesitter / Parser Errors

Symptom: You open a Python or C++ file, but there is no highlighting, or :checkhealth reports that cc or gcc is missing.
Fix:
Verify you installed gcc via Scoop (gcc --version).
If it’s installed but still failing, force a reinstall of the parser inside Neovim:
:TSInstall python (or whatever language you are using).

Issue 2: Telescope FZF Build Failure

Symptom: An error on startup saying telescope-fzf-native failed to build.
Fix:
This happens because Windows has trouble compiling the C extension automatically sometimes. Go to the plugin directory and build it manually:

powershell

cd $env:LOCALAPPDATA\nvim-data\lazy\telescope-fzf-native.nvim
make

Note: This requires the make and gcc tools we installed earlier.

Issue 3: Clipboard Sync

Symptom: Copying in Neovim (y) doesn’t let you paste (Ctrl+V) in your browser.
Fix:
Neovim usually detects win32yank.exe automatically.
Run :checkhealth and look at the Clipboard section. If it says “No clipboard tool found,” ensure you are on a recent version of Neovim. Scoop usually handles this pathing automatically.

Issue 4: Weird Characters in PowerShell

Symptom: The TUI looks broken or characters are misaligned.
Fix:
Force PowerShell to use UTF-8. Add this to your PowerShell Profile (code $PROFILE):

powershell

[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8


Phase 4: Customization

LazyVim is designed to be extended. Your config lives in $env:LOCALAPPDATA\nvim\lua.

Changing the Color Scheme

Create a file at lua/plugins/colorscheme.lua:

lua

return {
  -- Add the theme plugin
  { "catppuccin/nvim", name = "catppuccin", priority = 1000 },

  -- Configure LazyVim to load it
  {
    "LazyVim/LazyVim",
    opts = {
      colorscheme = "catppuccin",
    },
  },
}

Adding Keymaps

Edit lua/config/keymaps.lua. For example, to map jj to Escape:

lua

local map = vim.keymap.set
map("i", "jj", "<Esc>", { desc = "Escape insert mode" })


Conclusion

Setting up Neovim on Windows doesn’t have to be a nightmare. The combination of Scoop for dependency management and LazyVim for the editor configuration provides an experience that rivals any Linux setup.

You now have a keyboard-centric, lightning-fast IDE that runs natively on your OS. Stop fighting your tools and start coding.

Happy Hacking! 🚀

Leave a comment

Trending