Skip to content

Code Editor Vim Keybindings

Open in ChatGPT ↗
Ask ChatGPT about this page
Open in Claude ↗
Ask Claude about this page
Copied!

Use Vim keybindings in Warp's code editor for keyboard-driven navigation and editing.

The Vi family of programs (including Vim and Neovim) are modal text editors that allow for keyboard-driven text editing. Vi-style keybindings are especially popular among developers for their speed and precision in navigating and manipulating code. Warp’s code editor now includes native support for Vim keybindings (also known as Vim mode), offering a familiar editing experience directly within your coding workflows.

Vim mode in the code editor uses the same setting toggle as the input editor. To enable:

  • Through the Command Palette, search for “Vim Keybindings”.
  • Through Settings > Features > Text Editing, toggle “Edit code and commands with Vim keybindings”.

Unlike the input editor, the Vim implementation in the code editor starts in Normal mode.

At the moment, Warp only supports default Vim keybindings.

One exception is the keyboard shortcut for exiting insert mode, which can be rebound underSettings > Keyboard shortcuts > Exit Vim Insert Mode, or through the Command Palette search for “Exit Vim Insert Mode”.

Below is a list of the vim functionality implemented in Warp so far.

See Vim docs: motion for more information.

Command(s)Description
h, j, k, lsingle-char movement
<space>, <backspace>single-char movement with line wrap
w, W, b, B, e, Eword movement
ge, gEend of previous word
$end of line
0beginning of line
^first non-whitespace character of line
%jump to matching bracket
[, ]prev/next unmatched bracket
_beginning of the current line
+first non-whitespace character of the next line
-first non-whitespace character of the previous line
{, }prev/next paragraph
Command(s)Description
gg, Gjump to first/last line
Command(s)Description
rreplace character under cursor
d, Ddelete a range or object
c, Cchange a range or object (delete, then go to insert mode)
s, Ssubstitute (like change, but can only delete at the cursor)
x, Xdelete under cursor
y, Yyank (copy) into the clipboard
p, Ppaste from the clipboard
u, ⌃rundo, redo
~toggle upper/lowercase under cursor
gulowercase under cursor (u in visual mode)
gUuppercase under cursor (U in visual mode)
Jjoin current and following lines
.repeat last edit
gcctoggle comments on current line
gctoggle comments on visual selection

See Vim docs: editing for more information.

Command(s)Description
iinner (exclude delimiters in text object)
aaround (include delimiters in text object)
w, Wwhitespace-delimited string (word)
", ', ```quote-delimited string
(, {, [parenthesized/bracketed string

See Vim docs: text objects for more information.

Command(s)Description
t, T, f, Ffind next/prev matching character on line
;repeat last character search in the same direction
,repeat last character search in the opposite direction

See Vim docs: left-right motions for more information.

Unlike Vim, general search commands don’t search within the buffer. Instead, they open Warp’s native command search.

Command(s)Description
/, ?, *, #open Warp command search
Command(s)Description
iinsert text before the cursor
Iinsert text before the first non-whitespace character in the line
aappend text after the cursor
Aappend text at the end of the line
obegin new line below the cursor and insert text
Obegin new line above the cursor and insert text
vvisual character mode
Vvisual line mode

See Vim docs: insert and Vim docs: visual mode for more information.

Command(s)Description
"register prefix

Warp currently supports the following registers:

Register nameDescription
az, AZnamed registers
+system clipboard
*system clipboard
"unnamed register, containing the text of the last delete or yank

See Vim docs: registers for more information.

The best way to report bugs and request features is through Warp’s GitHub Issues page. Please note that the issue or request is for Vim Keybindings.