You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The popular Ctrl-v (paste), Ctrl-c (copy), Ctrl-z (undo) can be
enabled by typing: M-x cua-mode or by inserting =(cua-mode) in Emacs
configuration file. It also supports the Vim key bindings by
installing the evil package (M-x package-install evil).
Note: The Emacs standard key bindings can be overridden by user
configuration or modes like cua-mode or evil mode that emulates VI.
Iconify Emacs in graphical mode or suspend Emacs process when in terminal.
Note: Neither C-z or C-x C-c work in Cua mode.
File
Key Binding
Function
Description
C-x C-f
find-file
Open File.
C-x C-v
find-alternate-file
Open another file and kill current buffer.
C-x C-s
save-buffer
Save Current Buffer.
C-x C-w
write-file
Save Buffer as different file.
C-x s
save-some-buffers
Save all buffers interactively.
C-u C-x s
Save all buffers.
C-x C-C
save-buffers-kill-terminal
Closes Emacs and asks to save each buffers.
C-x i
insert-file
Insert the content of a file at cursor position.
-
revert-buffer
Update a buffer when the file is changed on disk.
C-x C-q
read-only-mode
Toggle read-only mode.
Buffers
Key Binding
Function
Description
C-x b
switch-to-buffer
Select Another Buffer
C-x C-b
list-buffers
List all buffers
C-x k
kill-buffer
Kill a buffer
C-x [right]
next-buffer
Move to next buffer
C-x [left]
previous-buffer
Move to previous buffer
Navigation
C-a
Go to start of the line
C-e
Go to end of the line.
C-k
Cut/Delete from cursor current position to the end of the line.
M-<
Move to top of buffer
M->
Move to Bottom of buffer
M-f
Move forward one word
M-b
Move backward one word
M-[left key]
Move backward one word
M-[right key]
Move forward one word
Mg-g <line-num>
Go to line number
Mg-c <cursor-pos>
Go to character position
Bookmarks
C-x r m
Add current buffer to bookmarks.
C-x r b
Open a buffer from bookmarks.
C-x r l
List bookmarks.
Search
C-s
Forward Search
C-r
Backward Search
M-%
Replace
C-s
Jump to next occurrence
C-r
Jump to previour occurrence
C-g
Exit search
M-s .
Find Symbol under cursor
M-s w
Find Symbol under cursor, match symbols with underscore, dot, hyphen ..
M-s o
List all matching lines
Highlight
M-s-h-.
Highlight symbol under cursor
M-s-h-p
Highlight phrase
M-s-h-r
Highlight regex
M-s-h-l
Highlight lines matching a regex
M-s-h-u
Unhighlight regex
Select, Copy, Cut and Paste
C - _
Undo
C - x u
Redo
C - Space
Begin Selection
C - G
Cancel Selection
C-x h
Select the whole buffer
M-w
Copy
C-y
Paste (Yank)
C-w
Cut (Wipe out), Delete and copy to clipboard (Kill Ring)
Word Case / Comment and Uncomment
M-u
Make word uppercase
M-l
Make word lowercase
M-c
Make word title (Capitalize only first letter)
M-;
Comment/ Uncomment Selected Code
Windows
Key Binding
Command (M-x <cmd>)
Description
C-x k
kill-buffer
Close current buffer
C-x b
switch-to-buffer
Switch to buffer
C-x C-b
list-buffers
Choose buffer Window
C-x 0
delete-window
Delete Current Window
C-x 1
delete-other-window
Keep the current window and delete the remaining windows.
C-x 2
split-window-below
Split Horizontally
C-x 3
Split Vertically
C-x o
Switch Window
Frames
Key Binding
Command (M-x <cmd>)
Description
C-x 5 0
kill-buffer
Close current frame
C-x 5 1
delete-other-frames
Close all frames except current one
C-x 5 2
make-frame-command
Create a new frame
C-x 5 o
other-frame
Alternate frame
C-z or C-x C-z
iconify-or-deiconify-frame
Minimize current frame
C-x 5 f
find-file-other-frame
Open file in a new frame.
C-x 5 r
find-file-read-only-other-frame
Open file in a new frame in read-only mode.
C-x 5 b
switch-to-buffer-other-frame
Switch to buffer in a new frame.
Note:
The key bind C-z is overridden by cua-mode if it enabled.
In terminal the key binding C-x C-z or the command
M-x iconify-or-deiconify-frame suspends the Emacs process. To
return to the process: type in the Unix shell fg and return.
Restricted Editing
Key Binding
M-x <cmd>
Description
C-x n n
narrow-to-region
Narrow to selected text (region)
C-x n w
widen
Back to full buffer
C-x n d
narrow-to-defun
Narrow to an s-expression
This set of commands allow to edit a limited area of the buffer.
Notes: This key bindings are overridden by cua-mode and C-x cuts the
selected text in this mode. If the keys are overridden then the
M-x <command> command must be used or the commands assigned to a new
key binding.
Keyboard Macros
Key Binding
M-x <cmd>
C-x (
kmacro-start-macro
C-x )
kmacro-end-macro
C-x e or f4
kmacro-end-and-call-macro
Informationm, Documentation and Help
Key Binding
Command (M-x command)
Description
C-h ?
help-for-help
Show all commands to get help on Emacs.
C-h a
apropos
Command Apropos
C-h i
info
Info documentation reader
info-apropos
Search for a string in emacs info pages
woman
Browser Unix man pages
C-h f
describe-function
Describe function
C-h v
describe-variable
Describe variable
C-h m
describe-mode
Describe mode
C-h s
describe-syntax
Describe syntax
C-h b
describe-bindings
Describe key bindings for current buffer
C-h k
describe-key
Describe a particular key binding.
find-library
Find a library *.el file loaded with require
Example: M-x find-library org
Selected Key Bindings and Commands for Programming
File Editing
C-x C-f
Open a new file or a existing file.
C-x C-s
Save current buffer
C-x b
Swithc Buffer
M-;
Comment/ Uncomment Selected Code
M-/
Autocomplete word (Equivalent to VIM Ctrl + p)
C-g
Cancel any Emacs command
Navigation
C-a
Move the cursor to the beggining of line
C-e
Move the cursor to the end of line
M-<
Move the cursor to the beggining of buffer
M->
Move to the cursor tor end of buffer
M-x goto-char
Got a character position
Mg-g <line-num>
Go to line number
Mg-c <cursor-pos>
Go to character position
M-m
Jump to first non whitespace in current line.
C-x r m
Make bookmark
C-x r b
Jump to bookmarks
Text Editing
C-y
Copy selected text by cursor (Copy region)
C-y
Paste when no text is selected. (Yank)
C-k
Delete current line from cursor position.
C-w
Cut (Wipe Out)
M-del
Delete previous word
M-d
Delete next word
C-x C-o
Delete all empty line around the cursor.
M-q
Justify / Re-align current paragraph
C-x C - (minus)
Decrease font size
C-x C + (plus)
Increase font size
M-x replace-string
Batch replace string in selected region or buffer.
M-x replace-regexp
Batch replace regex pattern in selected text or buffer.
M-x regexp-builder
Build and test Emacs regex patterns.
Indentation
M-x <command>
back-to-identation
M-m
Move to the first non-whitespace character on the current line.
ident-region
C-M-\
Indent all lines in a region.
ident-rigidly
C-x TAB
Select a region and type C-x TAB. Type right, left (move 1 space) or
S-right, S-left (move 1 tab) to move the block to left or right.
This keybinding doesn’t work if cua-mode is activated.
Indent entire buffer
C-x h -> Select the whole buffer.
C-M-\ or M-x indent-region
Ubiquitous Emacs Key Bindings
Some Emacs Key bindings (Emacs-style key bindings) are ubiquitous in
Unix apps like Bash, Sh and all shells that uses the GNU readline
library.
Key
Emacs
Bash Shell
C-a
Move the cursor to the beggining of line
same
C-e
Move the cursor to the end of line
same
C-n
Move the cursor to the next line (downward)
Show next command in the history.
C-p
Move the cursor to the previous line (upward)
Show the previou command in the history.
C-j
New line character (same as Return)
same
M-b
Move the cursor backward one word
same
M-f
Move the cursor forward one word
same
M-t
Swap current word with previous
same
M-d
Delete the next word
same
C-k
Delete the remaining of line from current cursor position
same
C-y
Paste the deleted line with (C-k) or copied line (Yank)
Key Bindings for Dired-mode and commands to find files
Dired mode key bindings
Dired mode provides a file manager in Emacs and it allows to browser
directories, open files, apply operations like copy, move, rename on
multiple files and apply shell commands on files. It can be invoked
with C-x d or M-x dired.
Key binding
Command
Description
C-x d
M-x dired
Open directory, enters in dired mode
C-x 4 d
M-x dired-other-window
Open directory in other window
C-x 5 d
M-x dired-other-frame
Open directtory in other frame
C-x C-f
Open a file on directory of dired buffer
M-x find-dired
Find all files in directory matching a pattern.
M-x dired-omit-files
Omit garbage or unimportant files
f
Open file at point in current window
o
Open file at point in another window
+
dired-create-directory
Create a directory
(
dired-hide-details-mode
Toggle hide/show details
C-x C-q
Makes the dired buffer editable. When finishing
changing files enter C-c C-c
w
Copy file name without directory
C-0 w
Copy file name with full path
m
Mark file or directory in dired mode
u
Unmark file
t
Mark/Unmark all files
X or !
dired-o-shell-command
Apply shell command to file at point. It can be used to
extract archives like *.tar, *.zip
M-!
Apply shell command to marked files (selected with m)
&
Run async shell command on file at point
or apply shell command to a list of files
s
Change the sorting order of the directory
D
Delete file
g
Update dired buffer if directory has changed
R
Rename file
%R
Rename with regex
y
Show file type
q
Kill dired buffer.
m
dired-mark
Mark current file
u
dired-unmark
Unmark current file.
g
revert-buffer
Revert dired buffer (updates it).
auto-revert-mode
Auto update dired buffer.
Commands to find files
Find files in the computer:
Command
Description
M-x find-name-dired
Find all files with given grep match.
M-x find-grep-dired
Find all file names matching a shell wildcard pattern.
M-x find-dired
Find all file names with find arguments specified by the user.
M-x rgrep
Search files that contains some regular expression.
Needs grep and find installed.
M-x lgrep
Search for files matching a regular expression in a
given directory without enter in subdirectories like rgrep.
M-x locate
Search files using the mlocate app or locate database.
Needs locate installed.
Key bindings for all Lisp dialects
Useful lisp key bindings to edit and navigate Lisp code.
Delimiter Wrapping
M-(
Wrap selection in parentheses
M-[
Wrap selection in square brackets
M-{
Wrap selection in curly brackets
S-expression Navigation
C-M-n
Move forward over a parenthetical group
C-M-p
Move backward over a parenthetical group
C-M-f
Move forward over a balanced expression
C-M-b
Move backward over a balanced expression
C-M-k
Delete s-expression under cursor
C-M-a
Move to the beggining of current function
C-M-e
Move to the end of current function
Useful Commands
Misc commands
Command
Key bindings
Description
General
M-x kill-emacs
-
Exit Emacs.
M-x save-buffers-kill-terminal
C-x C-c
Eixt Emacs and asks to save bufers.
M-x help-with-tutorial
C-h t
Open Emacs built in tutorial
M-x suspend-emacs
Suspend Emacs when in terminal or iconify in graphical mode.
M-x suspend-frame
C-x C-z
Minimize frame or suspend Emacs process in terminal. In terminal (Unix)
type fg to return to Emacs.
M-x quit-window
Quit Emacs.
Key bindings
global-set-key
Define a global key interactively.
global-unset-key
Unset a global key interactively.
local-set-key
Define a key binding to current major mode.
local-unset-key
Unset a key defined locally.
Edit
M-x delete-trailing-whitespace
Delete trailing Whistespace and ^M characters or \r from Dos or Windows.
M-x tabify
Converts all spaces to tab
M-x untabify
Converts all tabs to spaces.
M-x whitespace-mode
Toggle white space view.
Bufferf
M-x linum-mode
Toggle line numbers
M-x revert-file
Update buffer when file is changed externally.
M-x auto-revert-mode
Auto update the current file when its changed externally.
M-x auto-revert-tail-mode
Useful to watch log files. Follows tail of file. Equivalent to $ tail -f [file]
M-x rename-buffer
Rename current buffer.
M-x read-only
C-x C-q
Toggle the current buffer read only.
M-x auto-fill-mode
Automatically format paragraphs. It works like M-q, but automatically.
Operating System
M-x shell-command
M-!
Run a shell command and displays the output in a buffer.
M-x async-shell-command
M-&
Run asynchronous command like shells (python, ghci, scala …) and long running
commands like ping and traceroute. It can launch any application without freeze Emacs.
M-x make-directory
Prompts for a directory path and creates a directory.
M-x compile
Run a compilation command. Type g to compile again.
Notes:
The command auto-revert-mode is useful to edit alongside IDEs like
Visual Studio or Eclipse. If you change the file it is
automatically updated.
It may be better to disable C-x C-c, since it is easy to
accidentally hit and exit Emacs.
Change current buffer mode
it is useful to tell Emacs the file format to enable syntax highlight
and mode functions when editing a script or configuration file without
file extension like .gitconfig or python script without it.
M-x sh-mode Shell Script - sh extension
M-x pyhton-mode Example: A python script without extension “.py”
Note: EVIL - Is not what it seems. It stands for Extensible VI
Layer. I this case “evil is good”. It is an Emacs mode to emulate VI
keybinds and can be installed with M-x package-install evil.
To enable evil mode permanently add to init file:
(require'evil)
(evil-mode t)
To toggle evil mode type:
M-x evil-toggle
Basic Cursor Movement
Emacs
Vim/Evil
Description
C-n
j
Move cursror down one line
C-p
k
Move cursor up one line
C-b
h
Move cursor left one character
C-f
l
Move cursor right one character
VI Cursor motion:
k
|
h ---+--- l
|
j
Movement
Key Sequence
Description
Cursor Movements
^F (Ctrl - F)
Forward Screen
^B
Backward Screen
Line
0 or ^
Begginging of line
$
End of line
gg
Go to first line of file
G
Go to last line of the file.
Nth line or column
<n>gg
Got to line n, 20gg go to line 20.
<n>|
Got to to column n, ‘10|’ got to column 10.
Word
w
Move forward by one word
b
Move backward by one word
Paragraph
{
Go to beggining of next paragraph
}
Go to end of next paragraph
Parenthesis
%
Find match brace and parenthesis.
File under cursor
gf
Open file name under cursor
Search
Key Sequence
Description
/
Search forward
?
Search backward
*
Search for word under cursor. To find next word
type n and previous type p.
Editing
Key Sequence
Description
Undo / Redo
u
Undo
Delete
x
Delete char under cursor
X
Delete char before cursor
dd
Delete line
D (shift + d)
Delete to the end of line
di’
Delete text inside quotes
Copy
yy
Copy line
Y or y$
Copy from cursor to end of line.
Paste
p
Paste after cursor
P
Paste before cursor
Line
o
Add line below
O
Add line above
J
Join lines
Text Ident
Key Sequence
Description
v
Select text. Move the cursor to select text.
>
Indent to right
<
Indent to left
:set shiftwidth=4
Set 4 spaces as indent size.
Commands
Command
Description
:<Emacs M-x Command>
Run any Emacs M-x command like M-x dired with :dired.