Neovim Cheat Sheet

Basic Movement
Command Description Real-World Example
h / l Move left/right by one character
    Input:  h
    Effect: Cursor moves one character to the left
            
j / k Move down/up by one line
    Input:  j
    Effect: Cursor moves one line down
            
w / b Jump forward/backward to the start of the next/previous word
    Input:  w
    Effect: Cursor jumps to the next word
            
e Jump to the end of the current/next word
    Input:  e
    Effect: Cursor jumps to the end of the current/next word
            
0 Move to the beginning of the line
    Input:  0
    Effect: Cursor moves to the first column of the current line
            
^ Move to the first non-blank character of the line
    Input:  ^
    Effect: Cursor jumps to the first word of the current line
            
$ Move to the end of the line
    Input:  $
    Effect: Cursor jumps to the last character of the current line
            
{ / } Move to the beginning of the previous/next paragraph
    Input:  }
    Effect: Cursor moves to the start of the next paragraph
            
/pattern / ?pattern Search forward/backward for a pattern
    Input:  /function
    Effect: Cursor jumps to the next occurrence of "function"
            
n / N Repeat last search forward/backward
    Input:  n
    Effect: Jumps to next match of last search
            
Inserting & Editing
Command Description Real-World Example
i Insert before the cursor
    Input:  iHello
    Effect: Inserts "Hello" before cursor position
            
I Insert at the beginning of the line
    Input:  IHello
    Effect: Inserts "Hello" at the start of the current line
            
a Insert after the cursor
    Input:  aWorld
    Effect: Inserts "World" just after the current character
            
A Insert at the end of the line
    Input:  A!
    Effect: Appends "!" at the end of the current line
            
o Open a new line below and insert
    Input:  oNew line
    Effect: Creates a new line below and starts inserting "New line"
            
O Open a new line above and insert
    Input:  OHeader
    Effect: Adds "Header" on a new line above the current one
            
x Delete character under the cursor
    Input:  x
    Effect: Deletes the current character
            
dd Delete the current line
    Input:  dd
    Effect: Removes the entire line where the cursor is
            
dw Delete from cursor to end of word
    Input:  dw
    Effect: Deletes current word (or part of it) starting from cursor
            
d$ Delete from cursor to end of line
    Input:  d$
    Effect: Deletes all text from cursor to line end
            
D Same as d$
    Input:  D
    Effect: Deletes everything to the right of the cursor
            
cw Change word (delete and enter insert mode)
    Input:  cwHello
    Effect: Replaces the current word with "Hello"
            
cc Change the whole line
    Input:  ccHello World
    Effect: Replaces the entire line with "Hello World"
            
C Change from cursor to end of line
    Input:  CHi!
    Effect: Changes from current position to end of line to "Hi!"
            
s Substitute character under cursor
    Input:  sA
    Effect: Replaces current character with "A"
            
r Replace a single character
    Input:  rX
    Effect: Replaces current character with "X"
            
R Enter replace mode until <Esc>
    Input:  RHELLO
    Effect: Overwrites characters with "HELLO"
            
Copy & Paste
Command Description Real-World Example
yy Yank (copy) the current line
    Input:  yy
    Effect: Copies the entire line into default register
            
yw Yank from cursor to end of the current word
    Input:  yw
    Effect: Copies the current word from cursor position
            
y$ Yank from cursor to end of line
    Input:  y$
    Effect: Copies text from cursor to the end of line
            
Y Yank the entire line (same as yy)
    Input:  Y
    Effect: Copies the whole line
            
p Paste after the cursor or below the line
    Input:  p
    Effect: Pastes yanked content after cursor or below the line
            
P Paste before the cursor or above the line
    Input:  P
    Effect: Pastes yanked content before cursor or above the line
            
"aY Yank current line into register “a”
    Input:  "aY
    Effect: Saves the current line into register a
            
"ap Paste from register “a”
    Input:  "ap
    Effect: Pastes content stored in register a
            
Undo & Redo
Command Description Real-World Example
u Undo the last change
    Input:  u
    Effect: Reverts your most recent edit (e.g., undo inserted text)
            
<C-r> Redo the change that was just undone
    Input:  Ctrl + r
    Effect: Restores the change you just undid using u
            
Visual Mode
Command Description Real-World Example
v Enter visual mode (character-wise selection)
    Input:  v (then move with arrows or hjkl)
    Effect: Highlights characters one by one
            
V Enter linewise visual mode
    Input:  V
    Effect: Selects entire lines
            
<C-v> Enter block visual mode (column-wise)
    Input:  Ctrl + v (then move to select block)
    Effect: Highlights a rectangular block of text
            
y Yank the selected text
    Input:  v (select) → y
    Effect: Copies the selected area
            
d Delete the selected text
    Input:  V (select lines) → d
    Effect: Deletes selected lines
            
p Paste over the selection
    Input:  Select text → p
    Effect: Replaces selection with yanked text
            
: Run a command on the selected text
    Input:  v (select) → :sort
    Effect: Sorts the selected lines
            
Search & Replace
Command Description Real-World Example
/pattern Search forward for a pattern
    Input:  /error
    Effect: Highlights and jumps to the next occurrence of "error"
            
?pattern Search backward for a pattern
    Input:  ?function
    Effect: Searches up the file for "function"
            
n Repeat the last search in the same direction
    Input:  n
    Effect: Jumps to the next match of the last search
            
N Repeat the last search in the opposite direction
    Input:  N
    Effect: Jumps to the previous match of the last search
            
:%s/old/new/g Replace all occurrences of “old” with “new” in the whole file
    Input:  :%s/bug/fix/g
    Effect: Replaces all instances of "bug" with "fix"
            
:s/this/that/gc Replace “this” with “that” on the current line, confirming each
    Input:  :s/error/warning/gc
    Effect: Prompts before replacing each "error" with "warning" on current line
            
Command Description Real-World Example
:e filename Edit/open a file
    Input:  :e notes.txt
    Effect: Opens "notes.txt" in the current window
            
:Ex / :Explore Open file explorer
    Input:  :Ex
    Effect: Opens a split file explorer in the current directory
            
:ls List all open buffers
    Input:  :ls
    Effect: Shows all currently open files (buffers)
            
:bnext Go to next buffer
    Input:  :bnext
    Effect: Switches to the next file in the buffer list
            
:bprev Go to previous buffer
    Input:  :bprev
    Effect: Switches to the previous file in the buffer list
            
:bd Delete/close a buffer
    Input:  :bd
    Effect: Closes the current buffer
            
<C-w>v Split window vertically
    Input:  Ctrl + w, then v
    Effect: Opens a vertical split
            
<C-w>s Split window horizontally
    Input:  Ctrl + w, then s
    Effect: Opens a horizontal split
            
<C-w>h/j/k/l Move between windows
    Input:  Ctrl + w, then l
    Effect: Moves to the window on the right
            
:tabnew Open a new tab
    Input:  :tabnew
    Effect: Opens a new empty tab
            
gt Go to next tab
    Input:  gt
    Effect: Switches to the next tab
            
gT Go to previous tab
    Input:  gT
    Effect: Switches to the previous tab
            
LSP & Completion
Command Description Real-World Example
gd Go to definition of symbol
    Input:  gd
    Effect: Jumps to the function or variable definition under the cursor
            
K Show hover documentation
    Input:  K
    Effect: Shows documentation for the symbol under the cursor
            
<leader>rn Rename symbol
    Input:  <leader>rn
    Effect: Prompts to rename the variable or function under cursor
            
:lua vim.lsp.buf.format() Format current buffer using LSP
    Input:  :lua vim.lsp.buf.format()
    Effect: Formats the file according to language server rules
            
Useful Commands
Command Description Real-World Example
:w Save the current file
    Input:  :w
    Effect: Saves the current file
            
:q Quit Neovim
    Input:  :q
    Effect: Exits Neovim (only works if no changes are unsaved)
            
:wq Save and quit Neovim
    Input:  :wq
    Effect: Saves the file and exits Neovim
            
:x Save and quit (same as :wq)
    Input:  :x
    Effect: Saves the file and exits (same as :wq)
            
:q! Quit without saving (force quit)
    Input:  :q!
    Effect: Exits without saving changes, even if unsaved modifications exist
            
:!command Execute an external command
    Input:  :!ls
    Effect: Runs the "ls" command in the terminal and displays the output inside Neovim
            
:noh Clear search highlighting
    Input:  :noh
    Effect: Clears any active search highlighting
            
:set paste Enable paste mode (useful when pasting text)
    Input:  :set paste
    Effect: Temporarily disables automatic indentation and formatting, ideal for pasting text
            
File & Buffer Management
Command Description Real-World Example
:e filename Open a file for editing
    Input:  :e example.txt
    Effect: Opens "example.txt" in the current window for editing
            
:w Save the current file
    Input:  :w
    Effect: Saves the changes made to the current file
            
:q Quit Neovim
    Input:  :q
    Effect: Exits Neovim (only works if no changes are unsaved)
            
:ls List all open buffers
    Input:  :ls
    Effect: Displays a list of all open buffers in Neovim
            
:bnext Switch to the next buffer
    Input:  :bnext
    Effect: Switches to the next buffer in the buffer list
            
:bprev Switch to the previous buffer
    Input:  :bprev
    Effect: Switches to the previous buffer in the buffer list
            
:bd Close the current buffer
    Input:  :bd
    Effect: Closes the current buffer (file)
            
:b Switch to a specific buffer by its number
    Input:  :b 2
    Effect: Switches to the second buffer in the list
            
:sp Split the window horizontally and load a file
    Input:  :sp example.txt
    Effect: Opens "example.txt" in a horizontal split
            
:vsp Split the window vertically and load a file
    Input:  :vsp example.txt
    Effect: Opens "example.txt" in a vertical split
            
Window Management
Command Description Real-World Example
<C-w>v Split the window vertically
    Input:  <C-w>v
    Effect: Splits the current window into two vertical panes
            
<C-w>s Split the window horizontally
    Input:  <C-w>s
    Effect: Splits the current window into two horizontal panes
            
<C-w>h/j/k/l Navigate between windows using directional keys
    Input:  <C-w>h (move left window)
            <C-w>j (move down window)
            <C-w>k (move up window)
            <C-w>l (move right window)
    Effect: Moves the cursor to the respective window
            
<C-w>q Close the current window
    Input:  <C-w>q
    Effect: Closes the current window, leaving the other panes open
            
<C-w>w Switch to the next window
    Input:  <C-w>w
    Effect: Cycles to the next window in the current layout
            
<C-w>H Move the current window to the far left
    Input:  <C-w>H
    Effect: Moves the current window to the far left of the layout
            
<C-w>J Move the current window to the bottom
    Input:  <C-w>J
    Effect: Moves the current window to the bottom of the layout
            
<C-w>K Move the current window to the top
    Input:  <C-w>K
    Effect: Moves the current window to the top of the layout
            
<C-w>L Move the current window to the far right
    Input:  <C-w>L
    Effect: Moves the current window to the far right of the layout
            
Tabs
Command Description Real-World Example
:tabnew Open a new tab page
Input:  :tabnew
Effect: Opens a new tab page (creates a new workspace)
        
gt Switch to the next tab
Input:  gt
Effect: Switches to the next tab in the tab list
        
gT Switch to the previous tab
Input:  gT
Effect: Switches to the previous tab in the tab list
        
:tabn Go to the next tab
Input:  :tabn
Effect: Switches to the next tab
        
:tabp Go to the previous tab
Input:  :tabp
Effect: Switches to the previous tab
        
:tabnew filename Open a file in a new tab
Input:  :tabnew example.txt
Effect: Opens "example.txt" in a new tab
        
:tabclose Close the current tab
Input:  :tabclose
Effect: Closes the current tab (and all its windows)
        
Customization
Command Description Real-World Example
:set number Enable line numbering
Input:  :set number
Effect: Displays line numbers in the left margin
        
:set relativenumber Enable relative line numbering
Input:  :set relativenumber
Effect: Displays line numbers relative to the cursor position
        
:set hlsearch Highlight search results
Input:  :set hlsearch
Effect: Highlights all matches for the search pattern
        
:set incsearch Enable incremental search
Input:  :set incsearch
Effect: Shows search results as you type
        
:set ignorecase Enable case-insensitive search
Input:  :set ignorecase
Effect: Makes search patterns case-insensitive
        
:set smartcase Enable smart case search
Input:  :set smartcase
Effect: Enables case-sensitive search only when uppercase characters are used in the pattern
        
:set tabstop=4 Set tab width to 4 spaces
Input:  :set tabstop=4
Effect: Sets the tab width to 4 spaces
        
:set shiftwidth=4 Set the number of spaces to use for indentation
Input:  :set shiftwidth=4
Effect: Sets the indentation width to 4 spaces
        
:set expandtab Convert tabs to spaces
Input:  :set expandtab
Effect: Converts tabs to spaces when pressing the Tab key
        
Plugin Management
Command Description Real-World Example
:PlugInstall Install plugins with vim-plug
Input:  :PlugInstall
Effect: Installs all plugins listed in the vim-plug plugin manager configuration
        
:PlugUpdate Update installed plugins
Input:  :PlugUpdate
Effect: Updates all installed plugins to the latest version
        
:PlugClean Remove unused plugins
Input:  :PlugClean
Effect: Removes plugins that are no longer listed in the vim-plug configuration
        
:PluginInstall Install plugins with Pathogen
Input:  :PluginInstall
Effect: Installs plugins defined in the Pathogen configuration
        
:PluginUpdate Update plugins with Pathogen
Input:  :PluginUpdate
Effect: Updates all plugins installed via Pathogen
        
:PackerSync Sync and update plugins with Packer
Input:  :PackerSync
Effect: Installs, updates, and removes plugins defined in the Packer configuration
        

Leave a Comment

Your email address will not be published. Required fields are marked *

Shopping Cart