Before diving deeper into Neovim, there are some basic skills and tools you need to prepare first, from fundamental terminal CLI skills and the concept of text editing, to installing Neovim v0.10+, a modern terminal, and a Nerd Font.

Welcome to the Learn Neovim series! This series will take you from zero to production-ready Neovim mastery: starting with the philosophy of modal editing, Vim motions, fast navigation, registers & macros, Lua configuration (init.lua), the lazy.nvim plugin manager, Treesitter, LSP, autocompletion, all the way to a production-grade setup architecture in the upcoming episodes. There are 28 episodes in total that will guide you in building an ultra-fast editor as your daily driver.
But as the saying goes, "a sturdy house stands on a strong foundation". Before pressing the d key to delete text or writing your first Lua configuration, there are some basic skills and tools you must have and prepare first.
Why are these prerequisites so important? Neovim is an editor that runs inside the terminal and is configured using Lua. It is not a GUI application with clickable buttons — everything happens through the keyboard, commands, and text configuration files. In other words, if you are not yet comfortable with the terminal CLI or do not understand how text and files work at the system level, your learning journey will stall at every step. Imagine wanting to become a pilot but not understanding how to read cockpit instruments — no matter how great the plane is, taking off will still be difficult.
Episode 0 will be a roadmap to make sure you are all ready. We will cover the fundamental skills needed, prepare all the software (Neovim, a modern terminal, a Nerd Font, and supporting tooling), and then wrap up by verifying that everything works well. Once this episode is finished, you will be truly ready to move on to episode 1, which covers the history and background of why Neovim exists.
Let's start with skills. Without these skills, no matter how sophisticated your tools are, they will be useless.
Neovim was born and grew up in the Linux/Unix ecosystem, and it lives inside the terminal. Although it can run on Windows (natively or via WSL2), the majority of real-world usage — including on servers and in CI/CD — runs on Linux. That is why being able to operate the CLI is a hard requirement.
What should you master?
1. Navigation & file management. You should be comfortable switching directories, viewing contents, creating, copying, and deleting files. You will use this ability every day, including when managing the ~/.config/nvim/ configuration directory.
pwd # print current working directory
ls -la # list directory contents (including hidden files)
cd ~/.config/nvim # go to the Neovim configuration directory
mkdir -p lua/config # create nested directories
cp init.lua backup/init.lua # copy a file2. Reading and processing text. Neovim works with plain text files, and when debugging we often need to filter long log output. You need to know commands such as cat, less, grep, and sed.
3. The PATH concept & environment variables. When you run nvim in the terminal, the shell looks for that binary in the directories registered in $PATH. If nvim is not found (the command not found error), most likely the binary has not been added to PATH. Understanding $PATH will save you from one of the most common mistakes in this episode.
4. Package managers. You must be able to install software through your distro's package manager, because that is the easiest way to install Neovim. On Ubuntu/Debian use apt, on Fedora/RHEL use dnf, on Arch use pacman, and on macOS use brew.
Tip
If you are still a beginner on Linux, do not worry — you do not need to be a pro sysadmin to learn Neovim. The important thing is that you are comfortable navigating directories, editing files, and running commands in the terminal. The rest will keep sharpening as you progress through this series.
Neovim is a text editor, so understanding how text is represented on a computer is an important foundation. Some concepts you need to understand:
| Concept | Brief Explanation | Role in Neovim |
|---|---|---|
| Plain text vs rich text | Pure text without formatting (not a .docx) | Neovim only processes plain text / source code |
| Encoding (UTF-8) | The standard for how characters are represented as bytes | Modern Neovim defaults to UTF-8; files with weird encodings can look corrupted |
| Line endings | The end of a line (LF on Linux, CRLF on Windows) | Neovim can detect and normalize fileformat |
| File path & extension | File location and file type (.lua, .mdx, .py) | Determines the filetype that controls highlighting, indentation, and plugins |
| Line & column | Cursor position within a file | All Vim motions and navigation are based on this position |
Why does this matter? Because everything you will do in Neovim — deleting lines, jumping to the next word, searching for patterns — is essentially manipulation of the cursor position relative to the text. Understanding that a file is a collection of lines and characters will make all the motion concepts in episode 2 feel intuitive.
Note
You do not need to memorize encoding or file format details at the start. The important thing: understand that Neovim is a pure text editor, and most operations inside it are operations on position and text patterns.
Neovim's hardware requirements are very simple — a regular laptop is enough. Here is the complete list of items we will prepare in this episode:
| No | Tool | Type | Level | Description |
|---|---|---|---|---|
| 1. | Laptop / PC | Hardware | Required | The main machine; standard specs are enough, Neovim is very lightweight |
| 2. | Neovim v0.10+ | Software | Required | The main editor; version 0.10 or higher so the built-in LSP/Treesitter features are stable |
| 3. | Modern terminal | Software | Required | With true color & ligature support (Ghostty, WezTerm, Alacritty, Kitty) |
| 4. | Nerd Font | Font | Required | Displays icons (devicons, LSP, git signs) correctly |
| 5. | Git | Software | Required | Version control & Git-based plugin manager |
| 6. | Build tools (make, gcc/clang) | Software | Recommended | For compiling native plugin extensions (fzf-native, treesitter parsers) |
| 7. | Ripgrep & fd | Software | Recommended | Super-fast search engines for fuzzy finder & grep |
| 8. | unzip, npm, python3 | Software | Recommended | Dependencies for LSP servers & certain language tooling |
On Linux, the easiest way is through the package manager. Make sure the version you get is at least 0.10.0. On some distros (for example Debian stable), the Neovim version in the official repository can lag behind — if you need the latest version, use the AppImage, a binary release, or a community maintainer package.
sudo apt update && sudo apt install -y neovimWarning
If your apt or dnf yields Neovim 0.9 or older, do not continue yet. Many modern plugins (including lazy.nvim and Treesitter) require v0.10+. The solution: download the official AppImage/binary from the Neovim GitHub releases page, or install the latest version via a community package. Always check with nvim --version.
brew update
brew install neovimchoco install neovimImportant
For Windows users, the most recommended option for those of you learning DevOps is WSL2 — because all the commands in this series (and in most production documentation) are written in a Linux style. Install Neovim inside WSL2 using the apt/dnf methods above, not on native Windows.
Once installed, verify the version. Make sure it is at least NVIM v0.10.0:
nvim --version
NVIM v0.11.0
Build type: Release
...If your version is older than 0.10.0, upgrade first before continuing this series.
Neovim is an editor inside the terminal — which means the quality of its display depends heavily on the terminal you use. A modern terminal that supports true color (24-bit) will make Neovim colorschemes look perfect. Older terminals that only support 256 colors will make colors look "washed out" (posterized) and unpleasant to look at.
Recommended modern terminals:
| Terminal | Platform | Advantage | True Color |
|---|---|---|---|
| Ghostty | macOS & Linux | Fast, minimal, GPU-accelerated | ✅ |
| WezTerm | All (including Windows) | Lua configuration, tmux-like multiplexer | ✅ |
| Alacritty | All | GPU-accelerated, very lightweight | ✅ |
| Kitty | macOS & Linux | GPU-accelerated, full-featured (splits, images) | ✅ |
| Windows Terminal | Windows | The best default on Windows | ✅ |
Tip
No matter which terminal you choose, the golden rule: support true color, and set a dark background so the editor colors do not look pale. Ancient built-in terminals like cmd.exe should be left behind.
A Nerd Font is a font patched with thousands of glyphs/icons (chevrons, folders, git, programming language logos) needed by modern plugins such as nvim-web-devicons, lualine.nvim, and bufferline.nvim. Without a Nerd Font, those icons appear as empty boxes (tofu).
Recommendation: JetBrainsMono Nerd Font, FiraCode Nerd Font, or Hack Nerd Font. The easiest way is to download from the official Nerd Fonts website:
mkdir -p ~/.local/share/fonts
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/JetBrainsMono.zip
unzip JetBrainsMono.zip -d ~/.local/share/fonts
fc-cache -fv ~/.local/share/fontsfc-list | grep -i "JetBrainsMono"After the font is installed, set it in your terminal settings (not in Neovim). In Ghostty for example:
font-family = JetBrainsMono Nerd Font
font-size = 13Warning
The font must be set in the terminal, not in Neovim. Many beginners install a Nerd Font and then get confused because the icons are still boxes — that is because their terminal still uses the old font. After changing the font in the terminal, close and reopen the terminal so the change takes effect.
Neovim itself is just an editor — its full power comes from the ecosystem of tools around it. Some required/recommended tools:
| Tool | Function | Why It Is Needed |
|---|---|---|
git | Version control | The plugin manager (lazy.nvim) clones plugins from GitHub |
make | Build automation | Compiles native C-extension plugins (fzf-native, treesitter parsers) |
gcc / clang | C compiler | The build dependency above |
ripgrep (rg) | Super-fast grep | Live grep in the fuzzy finder — far faster than regular grep |
fd | A fast find alternative | File finder in the fuzzy finder |
unzip | Archive extraction | Used by some plugins during install (for example tree-sitter parsers) |
npm | Node.js package manager | Runs Node-based LSP servers (tsserver, vscode-langservers) |
python3 | Python runtime | Runs Python-based LSP servers (pyright, ruff) |
sudo apt install -y git make build-essential ripgrep fd-find unzip curl
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejsNote
Do not get stuck on the exact commands above — adjust them to your distro. What matters is that all the tools in the table are installed. The episodes in the plugin phase (episode 9+) will depend heavily on git, make, and the C compiler.
Once everything is installed, it is time for the first test. Run nvim in the terminal:
nvim
# Inside Neovim, check the health:
:checkhealthWhen it first opens, Neovim shows a blank screen with help text. Do not worry if it looks "empty" — that is by design. Default Neovim is indeed almost bare; in the coming phases we will build a modern look through Lua configuration.
A few things to verify:
:set termguicolors
:hi Normal guibg=#1e1e2e guifg=#cdd6f4If the background turns a dark blue-gray (Catppuccin Mocha) with bright text and no harsh color "banding", your true color works well.
Tip
If you are confused the first time you open Neovim: press i to enter insert mode and start typing, then press Esc to return to normal mode, and :q to quit. This magic trio of i, Esc, and :q will serve you for life!
Here are the most common mistakes beginners make during setup:
The Neovim version is too old. Many people install from an old distro repository (e.g. Debian stable) and get Neovim 0.7/0.8. As a result, the newest plugins fail. Solution: make sure nvim --version shows at least 0.10.0.
The terminal does not support true color. The colorscheme looks "washed out" or the colors look strange. Solution: use a modern terminal (WezTerm, Kitty, Ghostty, Alacritty), not an ancient built-in terminal.
The terminal font was not switched to a Nerd Font. Plugin icons appear as empty boxes (□). Solution: install a Nerd Font and change the font in the terminal settings, then restart the terminal.
command not found: nvim. The binary is not found in $PATH. Solution: check the install location, add it to PATH in your shell config (~/.bashrc/~/.zshrc), then source it again or open a new terminal.
Neovim runs slowly on WSL2. The project folder is on a Windows path (/mnt/c/...) which has slow I/O. Solution: keep your projects in the Linux file system (~/...), not in /mnt/c.
Trying to learn everything at once. Neovim feels "uncomfortable" in the first week — that is normal. Do not rush to install 50 plugins before understanding the basics of modal editing.
In episode 0 we prepared a solid foundation: we mastered two fundamental skills (terminal CLI and text editing concepts), installed Neovim v0.10+, set up a modern terminal with true color, installed a Nerd Font, and completed supporting tooling like git, make, gcc, ripgrep, fd, npm, and python3. We also verified that Neovim runs well in your terminal.
Key points to take with you:
$PATH.Make sure all the tools above are ready, because the next episode is all about concepts. In episode 1, we will discuss the history, background, and why you should choose Neovim — from the evolution of Vi (1976) → Vim (1991) → Neovim (2014), the advantages of Neovim's refactored architecture, to the modal editing philosophy that will change the way you write code. Stay motivated, because your Neovim learning journey has only just begun!