Skip to main content

My Neovim Setup — A Love Letter to Keystrokes

~5 min read
#neovim #tools #workflow

The Pitch

Every few months, someone asks me why I don’t just use VS Code. The answer is simple: I don’t want to use my mouse. Ever.

Neovim isn’t just a text editor. It’s a philosophy. The idea that every action should be expressible as a sequence of keystrokes — and that those keystrokes should be composable, repeatable, and fast.

The Stack

Here’s what my daily Neovim config looks like:

Plugin Manager: lazy.nvim

Gone are the days of Packer and Vim-Plug. lazy.nvim loads plugins on demand, keeps startup under 40ms, and has the best UI of any plugin manager I’ve used.

-- lazy.nvim bootstrap
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({ "git", "clone", "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git", lazypath })
end
vim.opt.rtp:prepend(lazypath)

LSP: The Brain

Native LSP with nvim-lspconfig gives me autocomplete, go-to-definition, rename across files, and inline diagnostics — all without leaving the terminal. For Python, pyright is instant. For Lua, lua_ls understands my config better than I do.

Telescope: The Finder

telescope.nvim is the single plugin I couldn’t live without. Fuzzy file search, live grep, buffer switching, LSP symbol search — all behind <leader>f bindings. It’s faster than any GUI file explorer.

Treesitter: The Painter

Syntax highlighting that actually understands your code’s AST. No more regex-based highlighting that breaks on edge cases. Treesitter knows the difference between a function name and a variable, and colors them accordingly.

The Theme

Tokyo Night. Obviously. The color palette is balanced enough for 10-hour sessions without eye strain, and the contrast ratio is perfect for my matte display.

Why Not VS Code?

VS Code is a great editor. But it’s built for the mouse. Every action involves clicking, dragging, or navigating menus. In Neovim, I can:

  • Delete a word: dw
  • Change inside quotes: ci"
  • Jump to any line: {number}G
  • Search and replace in the whole file: :%s/old/new/g

These aren’t shortcuts to memorize — they’re a language. d is delete. w is word. d + w = delete word. Once you learn the grammar, you can express any edit as a sentence.

The Catch

The learning curve is vertical. I spent my first two weeks being slower than I ever was in VS Code. But after a month, I crossed the efficiency threshold — and I’ve never looked back.

Your editor should feel like an extension of thought. For me, that’s Neovim.


:wq

Back to blog