+# References
+https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf
+https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Conventions.html
+
# General commands
C-x C-c Quit Emacs
-C-x C-s Save current buffer
+C-u C-x C-c Save and quit
C-g Cancel command
-M-x Execute command
C-/ Undo
C-g C-/ Undo undo
C-x z Repeat last command
-M-X 'eval-buffer Load current buffer as elisp
+M-x Execute command
# Help
C-h C-h Help
C-h k Help about key binding
C-h v Describe variable
C-h f Describe function
+C-h m Documentation on active modes
# Search
-C-M-s Regex search
-C-s Search forward
-C-r Search backward
+C-s Search forward (ivy/swiper mode)
+C-r Resume ivy search
M-s . Search for symbol around point
-M-s w Start word search
C-s Find next item (while searching)
Backspace Previous search (while searching)
M-% Search and replace
+M-x linum-mode Display line numbers
-# Buffers/windows/frames
+# Files/buffers
+C-x C-s Save current buffer
C-x s Save some buffers
-C-x C-f Find (open) file
+C-x C-w Write buffer to file
+C-x C-f Find file
+C-x f Find file
+C-c f Find files in git repository
+C-c g Grep in git repository
+M-x find-file-at-point Find (open) filename at point
+M-x browse-url-at-point Browse URL at point
C-x k Kill buffer
+C-x C-k Kill all buffers that are not visible
C-x b Select named buffer
C-x C-b Show all buffers
+C-x C-r Show recent files
+M-x scratch-buffer Create new scratch buffer
+
+# Windows/frames
C-x o Switch to other window
+C-x 0 Delete window
C-x 1 Switch to single window
C-x 2 Split vertically
C-x 3 Split horizontally
-M-x 'make-frame New frame (X11 window)
-M-= Display info about region
+C-x - Shrink window
+C-x + Make windows the same height
+C-x ^ Make window taller
+C-Up / C-Down / C-Left / C-Right Switch windows
+M-x make-frame New frame (X11 window)
+
+# Movement
+M-m Jump back to start of indentation
+M-r Jump to window top/bottom/middle
+M-g M-g Jump to line
+M-g Tab Jump to column
+M-g j Jump to character
+C-a Beginning of line
+C-e End of line
+C-p Back one line
+C-n Forward one line
+C-b Back one character
+C-n Forward one character
+M-b Back a word
+M-f Forward a word
+M-a Backward sentence
+M-e Forward sentence
+M-v Back page
+C-v Forward page
+M-{ Back one paragraph
+M-} Forward one paragraph
+M-< Top of file
+M-> End of file
+C-M-p Back to start of balanced expression
+C-M-n Forward to end of balanced expression
+C-M-b Back one s-expression / symbol
+C-M-f Forward one s-expression / symbol
+C-M-u Move up one level of parentheses
# Text formatting
M-/ Auto-complete
M-; Comment line or region
+M-i Change inner region
M-q Reformat paragraph
M-l Lower case word
M-u Upper case word
M-c Capitalise word
C-x C-l Lower case region
C-x C-u Upper case region
+C-o Insert a new line above point
+M-o Insert a new line below point
+C-j Newline and maybe indent
+M-^ Join to previous line
+M-j New line with comment
+C-q Quoted insert
-# Macros
-F3 , F4 Start recording macro
-C-u F3 Play last macro then append keys
-F4 Play back macro
-
-# Selecting/deleting/killing text
+# Marking
C-Space Set mark (start selection)
C-Space C-Space Set mark to point
C-u C-space Return to mark
-C-M-p Back to start of balanced expression
-C-M-n Forward to end of balanced expression
-C-M-k Kill balanced expression
+C-x C-x Exchange point and mark
+C-M-h Highlight expression
M-@ Set mark at end of next word
+C-= Expand region
+C-c l Insert extra cursor on all lines in region
+C-c m Ask to insert extra cursor at locations matching selected region
+M-= Display info about region
+
+# Killing and deleting
+C-M-k Kill s-expression / symbol
C-w Kill from mark to point
C-y Yank text (paste)
M-y Scroll through kill ring (paste buffer)
+M-_ Select current line
M-z <char> Kill until <char>
-C-k Kill rest of line
+C-k Kill to end of line
+M-0 C-k Kill to beginning of line
C-S-Backspace Delete current line
C-d Delete next character
M-d Delete next word
M-Space Collpase to one space around point
M-\ Delete spaces around point
C-x C-o Collapse blank lines
-M-X delete-trailing-whitespace Delete trailing whitespace
+M-x delete-trailing-whitespace Delete trailing whitespace
-# Lines
-C-o Insert new line at point
-C-j Newline and maybe indent
-M-^ Join to previous line
+# Transposing
+C-t Transpose chars
+M-t Transpose words
+C-x C-t Transpose lines
+C-M-t Transpose s-expressions
-# Movement
-M-m Jump back to start of indentation
-M-r Jump to window top/bottom/middle
-M-g M-g Jump to line
-M-g Tab Jump to column
-C-a Beginning of line
-C-e End of line
-C-p Back one line
-C-n Forward one line
-C-b Back one character
-C-n Forward one character
-M-b Back a word
-M-f Forward a word
-M-a Backward sentence
-M-e Forward sentence
-M-v Back page
-C-v Forward page
-M-{ Back one paragraph
-M-} Forward one paragraph
-M-< Top of file
-M-> End of file
+# Rectangle
+C-x Space Toggle mark rectangle mode
+C-x r t Replace rectangle with string
+
+# Macros
+F3 , F4 Start recording macro, finish recording macro
+C-u F3 Play last macro then append keys
+F4 Play back macro
+
+# Lisp
+M-: Evaluate expression as elisp
+M-x eval-buffer Load current buffer as elisp
+M-x eval-region Load current region as elisp
+M-x ielm Run elisp REPL
+
+# Shell
+M-! Execute command
+M-& Execute command asynchronously
+M-| Execute with region
+C-u M-| Filter with region
+M-x shell Start a shell
+
+# Dired
+C-x C-j Open dired at current file
+
+# Flyspell
+F8 Toggle flyspell-mode
+M-$ Correct word
+C-M-i Automatically correct word
+C-; Automatically correct last word
+<mouse-2> Popup word correction
+
+# Flycheck
+C-c ! v Verify setup
+C-c ! n Next error
+C-c ! p Previous error
+C-c ! l List errors
+C-c ! x Disable checker