Neovim for Actual Beginners
Author: Olivia Martinez
Published: March 12, 2026
A practical Neovim starting point: install, basics, and a small setup.
Introduction
Hello! 👋🏾 This is part one of my Neovim series.
This post focuses on beginner onboarding: getting Neovim installed, learning the core commands, and leaving with a small config you can actually understand. More Neovim posts follow this one as part of the same series.
The goal here is simple:
- Get Neovim installed on your computer.
- Teach you the minimum commands you need to get you going.
- Provide a small config you can understand and expand on.
Who This Is For / Not For
This post is for you if:
- You are new to Neovim (or Vim) and want a practical starting point.
- You are comfortable opening a terminal and editing a shell config file.
- You want to learn the built-in workflow before jumping into heavy plugins.
This post is not for you if:
- You already use Neovim daily and want plugin recommendations.
- You want a fully customized IDE setup on day one.
- You are looking for a distro-specific setup guide.
Tested On
This post assumes a Debian-based Linux environment and a shell such as Bash or Zsh, though the concepts here should be translatable to any OS and shell you decide to run with.
My personal setup:
- Neovim version: v0.11.4
- Distro: Ubuntu 24.04.3 LTS
- Shell: Zsh
Before You Start
If you've never used Neovim before, try out the built-in tutorial: :Tutor. It covers most of the basics, and it's good practice. Don't forget that you can always learn more about a topic with: :help {topic}. ex. :help :Explore, :help :write, :help :quit. 👩🏽🏫
Installation
Neovim can be installed in a variety of ways, but for beginners (and advanced users) on Linux, I still like the AppImage approach. My reasoning is simple as it is practical. By using an AppImage you avoid any distro package lag you might experience if you were to use your operating system's package management system. You can try the latest official release and you never have to worry if a sudo apt upgrade will change your editor version without your knowledge. This can be worthwhile too if you're running certain plugins that want you on specific versions of Neovim. Using an AppImage also makes version swaps explicit and easier. You have to replace the AppImage in order to upgrade or downgrade so you always know what binary you are running.
If you've never used an AppImage, here is a general setup:
-
Download the AppImage from Neovim's GitHub release page.
-
Make sure the AppImage is executable.
chmod +x nvim.appimage -
Create a local bin directory if needed.
mkdir -p $HOME/.local/bin -
Move the AppImage there.
mv nvim.appimage $HOME/.local/bin/nvim -
Add
$HOME/.local/binto yourPATHin your shell rc file (~/.bashrcor~/.zshrc).export PATH=$HOME/.local/bin:$PATH -
Restart your terminal (or source your rc file), then run:
nvim
Important Neovim Paths
Before we move on, it helps to know where Neovim stores its files:
- Config:
~/.config/nvim/ - Data:
~/.local/share/nvim/ - State/logs:
~/.local/state/nvim/
Knowing these early will make troubleshooting later much less mysterious. 🔮
A Small Note About Modes
One concept you should know early is that Neovim is a modal editor. Different keys do different things depending on the mode you are in.
| Mode | Enter with | What it's for |
|---|---|---|
| Normal | Esc (default when opening a file) | Movement and editing commands. |
| Insert | i (also a, o) | Typing text. |
| Visual | v | Character-wise text selections. |
| V-line | V | Whole-line selections. |
| Command-line | : | Run commands like :w, :q, and :help. |
| Terminal | :terminal then i | Interact with a shell inside a terminal buffer. |
For most of this post, you will switch between Normal and Insert mode the most. Insert mode is where you type normally, but to use Normal-mode motions and edits (w, dd, yy, and so on), you first return to Normal mode with Esc. Most modes are easiest to be entered from Normal mode.
If mouse support is enabled, Neovim can still let you click, select, and interact with text. But the main point of learning this workflow is to rely less on the mouse over time. 🐭
Terminal mode usually feels the most awkward at first because you do not exit it with plain Esc; you use CTRL-\ CTRL-n. One other quirk: terminal buffers inherit the environment from when you launched Neovim. So if you want a virtual environment ready there, it is often easiest to activate it before opening Neovim.
Essential Commands and Motions
This is not a full reference. It's the minimum set I think one should know going in.
First Survival Commands
| Command | What it does |
|---|---|
i | Enter insert mode. |
Esc | Return to normal mode. |
:w | Save the file. |
:q | Quit the current window. |
:wq | Save and quit. |
:q! | Quit without saving (use carefully). |
u | Undo. |
CTRL-r | Redo. |
Essential Editing
| Command | What it does |
|---|---|
yy | Yank (copy) current line. |
p | Paste after cursor. |
dd | Cut the current line. |
x | Delete character under cursor. |
r | Replace character under cursor. |
Essential Movement
| Command | What it does |
|---|---|
h j k l | Move left/down/up/right. |
w | Move forward by word. |
b | Move backward by word. |
0 | Start of line. |
$ | End of line. |
gg | First line of file. |
G | Last line of file. |
f{char} | Find next {char} to the right of the cursor. Use ; to repeat the search in the same direction and , to repeat the search in the opposite direction. |
F{char} | Find previous {char} to the left of the cursor. Use ; to repeat the search in the same direction and , to repeat the search in the opposite direction. |
Search
Use / followed by a pattern and <Enter> to search forward. Use n to jump to the next match and N to jump to the previous match. Use ? to search backward. The search will circle around itself if you pass the last result. By default, search is case-sensitive (unless your settings change it). To un-highlight the searched pattern use the :noh command.
A Minimum Practice List
From reading people's experience online, this is the part most people dislike. It's the barrier to entry, and it might seem difficult at first, but I promise you this will feel second-nature to you soon enough. If I were starting over, I would practice these first:
hjkli,Escyy,p,ddw,b,f{char}/,n,N:w,:q,:wqu,CTRL-r
I know it's not flashy or cool. You might have seen a demo online where someone types some undecipherable incantation and lands on the right {char} with perfect precision. But you don't need that to work with Neovim effectively. It's fine if you just use hjkl in normal mode to move around for the first few weeks. No one will judge. As you edit files, you will find your tried-and-true routine. One thing that is fantastic about Neovim is that there are about ten to a hundred ways to do any one thing, partly because it has no reliance on a mouse.
Oh and before we move on to the config. I should talk to you about mixing edits with movements. You probably already saw this in :Tutor, but it's worth reiterating here. You can combine edits with movements. df{char}, for instance, will delete from the character currently under your cursor when you run the command to the next instance of the {char} you search for. Likewise, y$ will yank from your cursor position to the end of the line. dG, if done from the very start of the file (0gg), will cut the entire contents of the file! It's worthwhile to test out edits + movements on a lorem ipsum text to get your feet wet. It's part of what makes Neovim so fun to use, just be careful about what you are doing and save periodically. Neovim doesn't come with an autosave feature necessarily.
A Small Starter Config
Now that you have installed Neovim and you know the basics, I'll leave you with a small config file you can use day one.
Configs are just as vital to using Neovim effectively as knowing your movements. With these small configs, you really can make Neovim conform to your habits and preferences.
-
Create the config directory if it doesn't exist.
mkdir -p ~/.config/nvim -
Open your config file.
nvim ~/.config/nvim/init.vim -
Add only the settings you want.
set number " shows line number at the left side of the buffer set autoindent expandtab tabstop=4 shiftwidth=4 " Provides 'smart' tab indentations when writing. set cursorline " highlights the current line the cursor is on in the buffer set showmatch " highlights the matching pair for [] {} () set showmode " displays the mode you are in on the last line of the buffer set ignorecase " ignores case-sensitivity when searching with / set incsearch " displays incremental search results for / searches set linebreak " linebreaks between words instead of characters set clipboard+=unnamedplus " enables system clipboard
These are intentionally basic. The point is not to build a perfect setup. The point is to make Neovim more comfortable while still learning what each setting does.
init.vim vs init.lua
Neovim also supports init.lua natively (you do not need a plugin manager for this). I am using init.vim here because this is a beginner post and the examples are short, but either format is valid. ✨️
Clipboard Note (Linux)
set clipboard+=unnamedplus is only part of the story. On Linux, you may also need a clipboard provider installed (xclip, xsel, or wl-clipboard) for system clipboard integration to work.
A quick sanity check:
- Yank text in Neovim.
- Try pasting it into another app.
- Run
:checkhealthif it fails and check the provider section.
If You Get Stuck (Modes, Macros, Terminal)
This happens to everyone and it's why I recommend set showmode in the settings.
- Stuck in a mode: press
Esc. Escdid not work: tryCtrl-C.- Accidentally started recording a macro: press
qagain. - Stuck in terminal mode: use
CTRL-\\ CTRL-n. - Accidentally suspended Neovim with
Ctrl-Z: runfgand press Enter. (I still do this one.)
Do not make :q! your first reflex. It can get you out quickly, but it throws away unsaved work in the current window.
What Comes Next
Once you are comfortable with the basics, the next things worth learning are:
- Buffers, windows, and tabs (the workspace model)
- Marks (fast jumping)
- Substitution (
:s) - Mappings (
:nnoremap,:inoremap, etc.)
I cover those in the follow-up post: Practical Neovim Workflows.