# 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
+* [Reference Card](https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf)
+* [Key Binding Conventions](https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Conventions.html)
# General commands
+```
C-x C-c Quit Emacs
C-u C-x C-c Save and quit
C-g Cancel command
C-x C-0 Reset font to standard
C-x C-+/= Increase font size
C-x C-- Decrease font size
+```
# 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-s Search forward (ivy/swiper mode)
C-r Resume ivy search
-M-s . Search for symbol around point
-C-s Find next item (while searching)
-Backspace Previous search (while searching)
+C-7 Start a cursor for each result (while searching)
+M-q Replace searched item (while searching)
+M-p Search for previous item (while searching)
+M-n Search for symbol at point (while searching)
M-% Search and replace
-M-x linum-mode Display line numbers
+```
# Files/buffers
+```
C-x C-s Save current buffer
C-x s Save some buffers
C-x C-w Write buffer to file
C-x 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 all buffers that are not visible
+C-x k Kill buffer
+C-x c Clean up 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 ^ 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
+M-g M-j Jump to charactor
+M-g M-l Jump to charactor on current line
+M-g M-w Jump to word by first character
+M-g M-g Jump to visible line or any line
C-a Beginning of line
C-e End of line
C-p Back one line
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
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
+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
+M-j New line with comment
+C-q Quoted insert
+C-M-\ Indent region
+C-c c Copy line
+C-c d Duplicate line
+M-x comment-box Wrap region in comment box
+```
# Marking
+```
C-Space Set mark (start selection)
C-Space C-Space Set mark to point
C-u C-space Return to mark
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-z <char> Kill until <char>
C-k Kill to end of line
M-0 C-k Kill to beginning of line
-C-a C-k C-k Kill current line
-C-S-Backspace Kill current line
+C-c k Kill whole line
+C-c s Copy line
C-d Delete next character
M-d Delete next word
M-Backspace Delete previous word
M-\ Delete spaces around point
C-x C-o Collapse blank lines
M-x delete-trailing-whitespace Delete trailing whitespace
+```
# Transposing
+```
C-t Transpose chars
M-t Transpose words
C-x C-t Transpose lines
C-M-t Transpose s-expressions
+```
# 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
+```
# Mode switching
-C-x C-j Open dired at current file
+```
+C-x C-j Open direx at current file
F8 Toggle flyspell-mode
F9 Toggle whitespace mode
F10 Toggle word wrap
M-x eshell Run eshell
M-x ielm Run Emacs Lisp REPL
+M-x linum-mode Display line numbers
M-x shell Run bash shell
M-x slime Run Common Lisp REPL
-M-x smerge-mode Resolve merge conflicts
+M-x smerge-ediff Resolve merge conflicts in multi-window mode
+M-x smerge-mode Resolve merge conflicts by hunks
M-x restclient Open HTTP client
M-x yas-reload-all Reload all snippets
+```
# Lisp
+```
C-M-x Eval top-level form
C-c C-z Switch to REPL
C-c C-c Compile and load the top-level form at point
C-c M-k Compile (but not load) the current buffer's file
+```
# Shell
+```
M-! Execute command
M-& Execute command asynchronously
M-| Execute with region
C-u M-| Filter with region
+```
# Smerge mode
+```
C-c ^ p Go to previous hunk
C-c ^ n Go to next hunk
C-c ^ Return Keep current
C-c ^ a Keep all
C-c ^ m Keep mine
C-c ^ o Keep other
+```
# Flyspell
+```
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
+```