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:

  1. Get Neovim installed on your computer.
  2. Teach you the minimum commands you need to get you going.
  3. Provide a small config you can understand and expand on.

Who This Is For / Not For

This post is for you if:

This post is not for you if:

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:

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:

  1. Download the AppImage from Neovim's GitHub release page.

  2. Make sure the AppImage is executable.

    chmod +x nvim.appimage
    
  3. Create a local bin directory if needed.

    mkdir -p $HOME/.local/bin
    
  4. Move the AppImage there.

    mv nvim.appimage $HOME/.local/bin/nvim
    
  5. Add $HOME/.local/bin to your PATH in your shell rc file (~/.bashrc or ~/.zshrc).

    export PATH=$HOME/.local/bin:$PATH
    
  6. 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:

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.

ModeEnter withWhat it's for
NormalEsc (default when opening a file)Movement and editing commands.
Inserti (also a, o)Typing text.
VisualvCharacter-wise text selections.
V-lineVWhole-line selections.
Command-line:Run commands like :w, :q, and :help.
Terminal:terminal then iInteract 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

CommandWhat it does
iEnter insert mode.
EscReturn to normal mode.
:wSave the file.
:qQuit the current window.
:wqSave and quit.
:q!Quit without saving (use carefully).
uUndo.
CTRL-rRedo.

Essential Editing

CommandWhat it does
yyYank (copy) current line.
pPaste after cursor.
ddCut the current line.
xDelete character under cursor.
rReplace character under cursor.

Essential Movement

CommandWhat it does
h j k lMove left/down/up/right.
wMove forward by word.
bMove backward by word.
0Start of line.
$End of line.
ggFirst line of file.
GLast 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:

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.

  1. Create the config directory if it doesn't exist.

    mkdir -p ~/.config/nvim
    
  2. Open your config file.

    nvim ~/.config/nvim/init.vim
    
  3. 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:

  1. Yank text in Neovim.
  2. Try pasting it into another app.
  3. Run :checkhealth if 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.

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:

I cover those in the follow-up post: Practical Neovim Workflows.

Further Reading