Vim Keybindings
Use Vim keybindings to edit commands in Warp's input editor.
About Vim keybindings
The Vi family of programs (including Vim and Neovim) are modal text editors that allow for keyboard-driven text editing. Several shells, including bash
and zsh
, implement vi-style keybindings. Warp's input editor was built natively to support more modern text editing experiences, which means it replaces the shell's editor capabilities. Warp has its implementation of Vim keybindings you can use.
How to enable Vim Keybindings
With bash
and zsh
, Warp attempts to detect the shell's keybinding settings. If a shell vi mode is detected, Warp may suggest enabling Vim keybindings.
To manually toggle Vim keybindings in Warp's input editor:
Through the Command Palette, search for "Vim Keybindings".
Through
Settings > Features > Editor
, toggle "Edit commands with Vim keybindings".
As in bash
and zsh
's vi mode implementations, the editor starts in insert mode. Pressing CTRL-C
or ENTER
clears any pending command state.
Customizing Keybindings
At the moment, Warp only supports default Vim keybindings.
One exception is the keyboard shortcut for exiting insert mode, which can be rebound under Settings > Keyboard Shortcuts > Exit Vim Insert Mode
, or through the Command Palette search for "Exit Vim Insert Mode".
Supported Keybindings
Below is a list of the vim functionality implemented in Warp so far.
Movement
See Vim docs: motion for more information.
Basic
h
, j
, k
, l
single-char movement
<space>
, <backspace>
single-char movement with line wrap
w
, W
, b
, B
, e
, E
word movement
ge
, gE
end of previous word
$
end of line
0
beginning of line
^
first non-whitespace character of line
%
jump to matching bracket
[
, ]
prev/next unmatched bracket
Multi-line-related
gg
, G
jump to first/last line
Editing
r
replace character under cursor
d
, D
delete a range or object
c
, C
change a range or object (delete, then go to insert mode)
s
, S
substitute (like change, but can only delete at the cursor)
x
, X
delete under cursor
y
, Y
yank (copy) into the clipboard
p
, P
paste from the clipboard
u
, ⌃r
undo, redo
~
toggle upper/lowercase under cursor
gu
lowercase under cursor (u
in visual mode)
gU
uppercase under cursor (U
in visual mode)
J
join current and following lines
.
repeat last edit
See Vim docs: editing for more information.
Text Objects
i
inner (exclude delimiters in text object)
a
around (include delimiters in text object)
w
, W
whitespace-delimited string (word)
"
, '
, ```
quote-delimited string
(
, {
, [
parenthesized/bracketed string
See Vim docs: text objects for more information.
Search
Character Search
t
, T
, f
, F
find 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.
General Search
Unlike Vim, general search commands don't search within the buffer. Instead, they open Warp's native command search.
/
, ?
, *
, #
open Warp command search
Mode Switching
i
insert text before the cursor
I
insert text before the first non-whitespace character in the line
a
append text after the cursor
A
append text at the end of the line
o
begin new line below the cursor and insert text
O
begin new line above the cursor and insert text
v
visual character mode
V
visual line mode
See Vim docs: insert and Vim docs: visual mode for more information.
Registers
"
register prefix
Warp currently supports the following registers:
a
–z
, A
–Z
named registers
+
system clipboard
*
system clipboard
"
unnamed register, containing the text of the last delete or yank
See Vim docs: registers for more information.
Feedback
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.
Last updated