Neovim for Beginners
📊 Overall Study Progress
⚡ Installing Neovim
Understand what Neovim is and get a working install on your system, then confirm everything is healthy before you write a single line of config.
-
What is Neovim: A hyperextensible, Vim-based text editor — fully Lua-scriptable, with a built-in LSP client and a modern plugin ecosystem. neovim.io — Official Site📝 Notes
-
Install via your package manager:
brew install neovim(macOS),sudo apt install neovim(Debian/Ubuntu),winget install Neovim.Neovim(Windows), or grab a release binary. Official INSTALL.md (all platforms)📝 Notes -
Launch & verify: Run
nvim --versionin your terminal, then opennvim. You should land on the start screen. Confirm you have v0.10+ for the latest features. Neovim Releases & Changelog📝 Notes -
Run
:checkhealth: Neovim's built-in diagnostics flag missing providers (Node, Python, clipboard) and misconfigurations. Fix anything marked ERROR before moving on. :checkhealth Documentation📝 Notes
⌨️ Modal Editing Basics
The single biggest hurdle for newcomers: Neovim is modal. Learn the modes and core motions until they're muscle memory.
-
Do
:Tutorend-to-end: Neovim ships an interactive 30-minute tutorial. Run:Tutorinside nvim — this is the fastest way to internalize movement and editing. Neovim User Manual (Table of Contents)📝 Notes -
The core modes: Normal (navigate/operate), Insert (
i/ato type), Visual (vto select), and Command-line (:).Escalways returns to Normal. Vim Modes Reference📝 Notes -
Motions & operators: Learn
h j k l,w b e,0 $,gg G, and the verb+noun grammar (delete,change,yank + a motion, e.g.diw). Neovim Quick Reference (motions)📝 Notes -
🎥 Vim as a language: Watch how motions + operators compose so you stop memorizing shortcuts and start "speaking" edits. 🎥 Mastering the Vim Language (Chris Toomey) Conference talk • ~30 min • the mental model that makes Vim click📝 Notes
🛠️ Configuring with init.lua
Make Neovim yours. Create a Lua config, set sensible options, and bind your own keymaps around a leader key.
-
Create your config directory: Neovim reads
~/.config/nvim/init.lua(or%LOCALAPPDATA%\nvim\init.luaon Windows). Start with a single file, split later. Official Lua Guide (:help lua-guide)📝 Notes -
Set core options: Use
vim.optfor essentials likenumber,relativenumber,expandtab,shiftwidth,ignorecase, andtermguicolors. Options Reference (:help options)📝 Notes -
Leader key & keymaps: Set
vim.g.mapleader = " "(space), then create mappings withvim.keymap.set(). The leader namespaces your personal shortcuts. Key Mapping Reference (:help map)📝 Notes -
Grow into a modular layout: As your config expands, move code into
lua/modules loaded withrequire(). Keep options, keymaps, and plugins in separate files. kickstart.nvim — documented single-file starting point📝 Notes
🧩 Plugins & Managers
Plugins turn Neovim into an IDE. Learn the modern plugin manager and decide between rolling your own or adopting a starter/distro.
-
lazy.nvim — the plugin manager: The de-facto standard. Declare plugins as Lua specs; it lazy-loads them on events, commands, or filetypes for fast startup. folke/lazy.nvim📝 Notes
-
Path A — kickstart.nvim: A small, single-file, heavily-commented config you own and modify. Best if you want to learn how everything fits together. nvim-lua/kickstart.nvim📝 Notes
-
Path B — LazyVim distro: A full, opinionated setup that works on first launch (LSP, treesitter, formatters, keymaps pre-wired). Best if you want an IDE now and to tweak later. LazyVim — Official Docs📝 Notes
-
Discover quality plugins: Browse curated lists and the awesome-neovim catalog to find well-maintained plugins instead of installing everything at once. awesome-neovim — curated plugin list📝 Notes
🧠 LSP, Completion & Treesitter
This is what makes Neovim a real IDE: language servers for diagnostics and go-to-definition, autocompletion, and accurate syntax via Treesitter.
-
Built-in LSP client: Neovim speaks the Language Server Protocol natively. Wire up servers for diagnostics, hover, rename, and go-to-definition via nvim-lspconfig. neovim/nvim-lspconfig📝 Notes
-
Install servers with Mason:
mason.nvimis a one-stop installer for language servers, linters, and formatters — manage them with:Mason. williamboman/mason.nvim📝 Notes -
Autocompletion: Add a completion engine like
nvim-cmp(or blink.cmp) wired to your LSP sources for inline suggestions and snippets. hrsh7th/nvim-cmp📝 Notes -
Treesitter syntax:
nvim-treesittergives fast, accurate, AST-based highlighting and indentation. Install language parsers with:TSInstall. nvim-treesitter/nvim-treesitter📝 Notes
🚀 Everyday Workflow
Tie it together into a daily driver: fuzzy-find files, manage buffers and splits, navigate the filesystem, and build lasting habits.
-
Fuzzy-find with Telescope: Jump to any file, grep your project live, and search buffers/help with
telescope.nvim— the most-used navigation plugin. nvim-telescope/telescope.nvim📝 Notes -
Buffers, windows & tabs: Understand the model — buffers are open files, windows are viewports (splits via
:split/:vsplit), tabs are layouts. Navigate splits withCtrl-w. Windows & Buffers (:help windows)📝 Notes -
File navigation: Use the built-in
netrwor a tree plugin (neo-tree / nvim-tree / oil.nvim) to browse and edit your project's file system. nvim-neo-tree/neo-tree.nvim📝 Notes -
🎥 Build an IDE from scratch: Watch TJ DeVries (a Neovim core maintainer) build a working setup on top of kickstart.nvim, explaining each choice. 🎥 Effective Neovim: Instant IDE (TJ DeVries) Walkthrough • ~30 min • from the kickstart.nvim author📝 Notes