vim (vi) and emacs: "Rosetta Stone" Quick Reference

A "Cheat Sheet." Also includes default Readline bindings for bash shell.
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:
~, d, p (put), y (yank), Y (yank whole lines).
 

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