NOTE: This guide now uses the Unicode and ISO standard characters:
⇧ for shift, ⎈ for Ctrl, ⎇ for Meta or Alt, and ⎆ for Enter.
Also NOTE: Alt-space is usually trapped by XWindows, thus the sequence Esc-space is shown in the Editing section.
vim |
Action.
Note: n generally defaults to 1 if not given.
Emacs: command is cursor movement. Emacs arguments, use ⎈U n or ⎇ n |
emacs |
bash
(readline) |
||
Forward | Backward | Forward |
Backward |
(×=as
emacs) |
|
S C R O L L I N G |
|||||
---|---|---|---|---|---|
⎈E | ⎈Y | Scroll by line | |||
⎈D | ⎈U | Scroll by half page | |||
⎈F | ⎈B | Scroll by page | ⎈V |
⎇v |
|
z<cr> z. z- | redraw; place
current line at top of screen (z. in middle, z- at bottom). emacs: ⎈L alternates middle, top, bottom. |
⎈L |
|||
M O V E M E N T |
|||||
j, ⎈N, ⎈J | k, ⎈P | Move one line | ⎈N |
⎈P |
× |
+ | - | Move one line, to first nonblank | ⎈N ⎇m | ⎈P ⎇m | |
h, ⎈H | l, <sp> | Move one column | ⎈F |
⎈B |
× |
$ |
0 |
Move to end or start of line | ⎈E |
⎈A |
× |
^ | Move to first nonblank column | ⎇m |
|||
n| | Move to column n | ⎇G TAB n |
|||
nG | Move to line n or EOF if n not given | ⎇G ⎇G n |
|||
Esc 1 G | G | Move
to end or start of buffer |
⎇> |
⎇< |
× |
H, M, L | Position top, middle, bottom | ||||
nH |
nL |
Position n
lines past top or before bottom |
|||
Movement by content |
|||||
w | b | Move by word | ⎇f |
⎇b | × |
W | B | Move by blank-delimited word | |||
e, E | Forward to end of word (E blank-delimited) | ||||
) | ( | Move by sentence | ⎇e |
⎇a |
|
} | { | Move by paragraph | ⎇} |
⎇{ |
|
]] | [[ | Move by section (default: formfeed delimited) ※ | ⎈X ] | ⎈X [ | |
Searching |
|||||
/pattern | ?pattern | Search for pattern NOTE: Emacs searches are incremental | ⎈S pattern |
⎈R pattern |
× |
n | N | Search again in same (n) or opposite (N) direction | ⎈S
⎆ |
⎈R
⎆ |
× |
In Isearch, edit search string non-incrementally | ⎇E |
||||
Search for regular expression | ⎇⎈S regex |
⎇⎈R regex |
|||
Create buffer: all occurrences of regular expression ※ | ⎇S o regex ⎆ | ||||
In Isearch, create occur buffer using search string as regex | ⎇S o | ||||
fchar | Fchar | Search for character on current line | |||
tchar | Tchar | Position before character on current line | |||
; | , | Repeat character search on current line | |||
% | Find matching brace | (automatic) |
|||
Marks ※ |
|||||
mx | Set mark x (emacs: global mark)※ | ⎈space |
× | ||
`` | '' | Move to previous mark; move to start of prev mark's line | ⎈X⎈X |
× | |
`x | 'x | Move to mark x; to start of markx's line | |||
Move to previous mark from mark ring ※ | ⎈U ⎈space | ||||
V | ⎈V | Set mark and enter visual
(V) or visual block (⎈V)
mode.NOTE: vi commands on visual area include: |
|||
Editing |
|||||
a | i | Insert new text after (i before) cursor | |||
A | I | Insert at end (I beginning) of current line | |||
o | O | Open new line after (O before) cursor | ⎈O |
||
r, R | Replace one character; Enter Replace mode | ||||
x | X | Delete character under (X to left of) cursor | ⎈D |
<delete> |
× |
dw | Delete word |
⎇d |
⎇BS | × | |
d{command} | Delete (cut) text in region or spanned by command | ⎈space
{command}
⎈W |
× | ||
c{command} | Change - c is like d{command}i | ||||
nD, nC | Delete, Change to start or end of line (and n-1 more lines) | ⎈K |
⎈X
BS (to start) |
||
Delete blank lines around cursor |
⎈X⎈O |
||||
Delete all whitespace at cursor | ⎇\ |
||||
Replace any whitespace at cursor with exactly one space | <Esc> <space> |
||||
nJ, gnJ | Join next line (n lines) to end of current. (g omits spaces) | ⎈E⎈D | |||
Join
this line to previous and compress whitespace at join. |
⎇⎈ |
||||
Move
rest of line down (break
and indent to current column) |
⎈⎇O |
||||
Break line and indent like current line |
⎈⎇J |
||||
Indent (negative n outdent) region by n columns | ⎈U n ⎈X ⎈I |
||||
n~ | Toggle
upper/lower case for n
characters. |
||||
UPPERCASE, Capitalize, lowercase current word | ⎇u, ⎇c, ⎇l | × | |||
Copy
& Paste (see Delete above for Cut)
|
|||||
y{command} | Copy
region or text spanned by command vi: in visual mode, omit command and operate on region. |
⎈space
{command}
⎇w |
× | ||
Y | Copy current line | ⎈A
⎈space ⎈E ⎇w |
|||
p | P | Paste
text (from Copy or Delete/Cut) after (P
before) cursor |
⎈Y |
× | |
" n | Prefix for y, Y, p, or P to operate on register n. | ||||
Paste
text without moving cursor |
⎈U⎈Y |
||||
Replace
last pasted text with previous entry
from kill ring |
⎇Y |
× | |||
Copy to register n. (With argument, also delete.) | ⎈x r x n | ||||
Insert contents of register n. | ⎈x r i n | ||||
u | U | Undo last command, commands on a line | ⎈_ or ⎈/ | × | |
. | Repeat last command †Emacs: continue repeating with z | ⎈X z |
|||
Abort current command |
⎈G | × |
|||
Files |
|||||
:w | :z | Save; Save and Exit | ⎈X⎈S | ⎈X⎈S ⎈X⎈C | |
:q | :q! | Quit (vi :q! quits without saving) | ⎈X⎈C | ||
Windows |
|||||
⎈Ws | ⎈Wv | Split Window Horizontally; Vertically | ⎈X2 | ⎈X3 | |
⎈Ww | ⎈Wq | Switch windows; Close current window | ⎈Xo | ⎈X0 | [zero] |
Close all other windows | ⎈X1 | ||||
⎈W> | ⎈W< | Make current window wider; narrower | ⎈X} | ⎈X{ | |
⎈W+ | ⎈W– | Make current window taller; shorter | ⎈X^ | ⎈U-1⎈X^ | |
Fit current window to contents | ⎈X+ |
See also: the
official ※ GNU
Emacs manual and
the participatory
Emacs wiki.
Courtesy
wlindley.com
May be freely distributed. rev 2015-08-28