Navigation
Cursor Movement
C-f / C-bForward / backward one character
M-f / M-bForward / backward one word
C-n / C-pNext / previous line
C-a / C-eBeginning / end of line
M-a / M-eBeginning / end of sentence
C-v / M-vScroll down / up one page
M-< / M->Beginning / end of buffer
M-g gGo to line number
Screen Positioning
C-lRecenter screen (cycle top/center/bottom)
C-M-lReposition window heuristically
Editing
Kill & Yank (Cut & Paste)
C-kKill to end of line
C-wKill region (cut)
M-wCopy region
C-yYank (paste)
M-yCycle through kill ring after yank
C-dDelete character forward
M-dKill word forward
M-DELKill word backward
Undo & Transpose
C-/ or C-_Undo
C-g C-/Redo (undo the undo)
C-tTranspose characters
M-tTranspose words
C-x C-tTranspose lines
Selection
C-SPCSet mark (start selection)
C-x hSelect entire buffer
M-hSelect paragraph
C-x C-xExchange point and mark
Buffers & Windows
Buffers
C-x bSwitch to buffer
C-x C-bList all buffers
C-x kKill (close) buffer
C-x LEFT / RIGHTPrevious / next buffer
Windows
C-x 2Split window horizontally
C-x 3Split window vertically
C-x 0Close current window
C-x 1Close all other windows
C-x oSwitch to other window
C-x ^Grow window vertically
C-x {Shrink window horizontally
Frames
C-x 5 2Create new frame
C-x 5 0Delete current frame
C-x 5 oSwitch to other frame
Search & Replace
Incremental Search
C-sSearch forward (incremental)
C-rSearch backward (incremental)
C-s C-sRepeat last search forward
C-M-sRegex search forward
C-M-rRegex search backward
RETExit search at current position
C-gCancel search, return to start
Replace
M-%Query replace
C-M-%Query replace regexp
yReplace this match
nSkip this match
!Replace all remaining
qQuit replacing
Files
File Operations
C-x C-fFind (open) file
C-x C-sSave current buffer
C-x C-wSave as (write to new file)
C-x sSave all modified buffers
C-x C-rOpen file read-only
C-x iInsert file contents at point
Dired (Directory Editor)
C-x dOpen directory in Dired
d / xFlag for deletion / execute deletions
RRename / move file
CCopy file
+Create directory
gRefresh listing
Modes
Major Modes
M-x fundamental-modePlain text editing
M-x text-modeText with fill and spelling
M-x prog-modeBase for programming modes
M-x python-modePython editing and indentation
M-x shell-modeInteractive shell in buffer
Useful Minor Modes
M-x display-line-numbers-modeToggle line numbers
M-x auto-fill-modeAuto-wrap at fill column
M-x flyspell-modeOn-the-fly spell checking
M-x column-number-modeShow column in mode line
M-x whitespace-modeVisualize whitespace
M-x electric-pair-modeAuto-close brackets and quotes
Org Mode Basics
Structure
* / ** / ***Heading levels 1 / 2 / 3
TABCycle heading visibility
S-TABCycle global visibility
M-RETInsert heading at same level
M-LEFT / M-RIGHTPromote / demote heading
M-UP / M-DOWNMove subtree up / down
TODO & Checkboxes
C-c C-tCycle TODO state
C-c C-dSet deadline
C-c C-sSchedule item
C-c C-cToggle checkbox [ ] / [X]
C-c aOpen agenda view
Links & Export
C-c C-lInsert / edit link
C-c C-oOpen link at point
C-c C-eExport dispatcher (HTML, PDF, etc.)
Package Management
package.el
M-x list-packagesBrowse available packages
i / d / xMark install / delete / execute
UMark all upgradable
M-x package-refresh-contentsRefresh package list
use-package (init.el)
(use-package magit :ensure t :bind ("C-x g" . magit-status)) (use-package company :ensure t :hook (prog-mode . company-mode))
Configuration
Key Config Files
~/.emacs.d/init.elMain configuration file
~/.emacs.d/early-init.elEarly init (before GUI, Emacs 27+)
~/.emacs.d/custom.elCustomize-written settings
Common Settings
(setq inhibit-startup-screen t) (tool-bar-mode -1) (set-face-attribute 'default nil :height 120) (global-display-line-numbers-mode 1) (setq make-backup-files nil)
Help System
C-h kDescribe key binding
C-h fDescribe function
C-h vDescribe variable
C-h mDescribe current modes
C-h tOpen Emacs tutorial
C-h iOpen Info documentation
Common Patterns
Rectangle Editing
C-x SPCStart rectangle mark mode
C-x r kKill rectangle
C-x r yYank rectangle
C-x r tReplace rectangle with string
C-x r oInsert blank rectangle
Macros
C-x (Start recording macro
C-x )Stop recording macro
C-x eExecute last macro
C-u 10 C-x eExecute macro 10 times
M-x name-last-kbd-macroName macro for reuse
Shell & Eval
M-x shellOpen shell in buffer
M-x eshellEmacs Lisp shell
M-!Run shell command
M-x eval-bufferEvaluate entire buffer as Elisp
C-x C-eEvaluate Elisp expression before point